import os

from unittest.mock import Mock, patch

import pytest

from tartiflette.language.ast import (
    ArgumentNode,
    BooleanValueNode,
    DescriptionNode,
    DirectiveDefinitionNode,
    DirectiveNode,
    DocumentNode,
    EnumTypeDefinitionNode,
    EnumTypeExtensionNode,
    EnumValueDefinitionNode,
    EnumValueNode,
    FieldDefinitionNode,
    FloatValueNode,
    InputObjectTypeDefinitionNode,
    InputObjectTypeExtensionNode,
    InputValueDefinitionNode,
    InterfaceTypeDefinitionNode,
    InterfaceTypeExtensionNode,
    IntValueNode,
    ListTypeNode,
    ListValueNode,
    Location,
    NamedTypeNode,
    NameNode,
    NonNullTypeNode,
    NullValueNode,
    ObjectFieldNode,
    ObjectTypeDefinitionNode,
    ObjectTypeExtensionNode,
    ObjectValueNode,
    OperationTypeDefinitionNode,
    ScalarTypeDefinitionNode,
    ScalarTypeExtensionNode,
    SchemaDefinitionNode,
    SchemaExtensionNode,
    StringValueNode,
    UnionTypeDefinitionNode,
    UnionTypeExtensionNode,
)
from tartiflette.language.parsers.lark import parse_to_document

_BASE_DIR = os.path.dirname(__file__)


@pytest.mark.skip(reason="Shouldn't fail...")
@pytest.mark.parametrize(
    "sdl_file_path",
    [
        os.path.join(_BASE_DIR, "fixtures", "simple.graphql"),
        os.path.join(_BASE_DIR, "fixtures", "advanced.graphql"),
        os.path.join(_BASE_DIR, "fixtures", "kitchen-sink.graphql"),
        os.path.join(_BASE_DIR, "fixtures", "keyword-tokens.graphql"),
        os.path.join(_BASE_DIR, "fixtures", "github.graphql"),
    ],
)
def test_parse_without_exception(sdl_file_path):
    with open(sdl_file_path) as sdl_file:
        assert isinstance(parse_to_document(sdl_file.read()), DocumentNode)


@pytest.mark.skip(reason="Shouldn't fail...")
@pytest.mark.parametrize(
    "sdl_file_path,expected",
    [
        (
            os.path.join(_BASE_DIR, "fixtures", "simple.graphql"),
            DocumentNode(
                definitions=[
                    SchemaDefinitionNode(
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="enable_cache",
                                    location=Location(
                                        line=1,
                                        column=9,
                                        line_end=1,
                                        column_end=22,
                                    ),
                                ),
                                arguments=[],
                                location=Location(
                                    line=1, column=8, line_end=1, column_end=22
                                ),
                            )
                        ],
                        operation_type_definitions=[
                            OperationTypeDefinitionNode(
                                operation_type="query",
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="RootQuery",
                                        location=Location(
                                            line=2,
                                            column=12,
                                            line_end=3,
                                            column_end=5,
                                        ),
                                    ),
                                    location=Location(
                                        line=2,
                                        column=12,
                                        line_end=3,
                                        column_end=5,
                                    ),
                                ),
                                location=Location(
                                    line=2, column=5, line_end=3, column_end=5
                                ),
                            ),
                            OperationTypeDefinitionNode(
                                operation_type="mutation",
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="RootMutation",
                                        location=Location(
                                            line=3,
                                            column=15,
                                            line_end=4,
                                            column_end=5,
                                        ),
                                    ),
                                    location=Location(
                                        line=3,
                                        column=15,
                                        line_end=4,
                                        column_end=5,
                                    ),
                                ),
                                location=Location(
                                    line=3, column=5, line_end=4, column_end=5
                                ),
                            ),
                            OperationTypeDefinitionNode(
                                operation_type="subscription",
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="RootSubscription",
                                        location=Location(
                                            line=4,
                                            column=19,
                                            line_end=5,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=4,
                                        column=19,
                                        line_end=5,
                                        column_end=1,
                                    ),
                                ),
                                location=Location(
                                    line=4, column=5, line_end=5, column_end=1
                                ),
                            ),
                        ],
                        location=Location(
                            line=1, column=1, line_end=7, column_end=1
                        ),
                    ),
                    ScalarTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="Date",
                            location=Location(
                                line=7, column=8, line_end=9, column_end=1
                            ),
                        ),
                        directives=[],
                        location=Location(
                            line=7, column=1, line_end=9, column_end=1
                        ),
                    ),
                    UnionTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="Group",
                            location=Location(
                                line=9, column=7, line_end=9, column_end=13
                            ),
                        ),
                        directives=[],
                        types=[
                            NamedTypeNode(
                                name=NameNode(
                                    value="Foo",
                                    location=Location(
                                        line=9,
                                        column=15,
                                        line_end=9,
                                        column_end=19,
                                    ),
                                ),
                                location=Location(
                                    line=9,
                                    column=15,
                                    line_end=9,
                                    column_end=19,
                                ),
                            ),
                            NamedTypeNode(
                                name=NameNode(
                                    value="Bar",
                                    location=Location(
                                        line=9,
                                        column=21,
                                        line_end=9,
                                        column_end=25,
                                    ),
                                ),
                                location=Location(
                                    line=9,
                                    column=21,
                                    line_end=9,
                                    column_end=25,
                                ),
                            ),
                            NamedTypeNode(
                                name=NameNode(
                                    value="Baz",
                                    location=Location(
                                        line=9,
                                        column=27,
                                        line_end=11,
                                        column_end=1,
                                    ),
                                ),
                                location=Location(
                                    line=9,
                                    column=27,
                                    line_end=11,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=9, column=1, line_end=11, column_end=1
                        ),
                    ),
                    InterfaceTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="Something",
                            location=Location(
                                line=11, column=11, line_end=11, column_end=21
                            ),
                        ),
                        directives=[],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="oneField",
                                    location=Location(
                                        line=12,
                                        column=5,
                                        line_end=12,
                                        column_end=13,
                                    ),
                                ),
                                arguments=[],
                                type=ListTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="Int",
                                            location=Location(
                                                line=12,
                                                column=16,
                                                line_end=12,
                                                column_end=19,
                                            ),
                                        ),
                                        location=Location(
                                            line=12,
                                            column=16,
                                            line_end=12,
                                            column_end=19,
                                        ),
                                    ),
                                    location=Location(
                                        line=12,
                                        column=15,
                                        line_end=13,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=12,
                                    column=5,
                                    line_end=13,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="anotherField",
                                    location=Location(
                                        line=13,
                                        column=5,
                                        line_end=13,
                                        column_end=17,
                                    ),
                                ),
                                arguments=[],
                                type=ListTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="String",
                                            location=Location(
                                                line=13,
                                                column=20,
                                                line_end=13,
                                                column_end=26,
                                            ),
                                        ),
                                        location=Location(
                                            line=13,
                                            column=20,
                                            line_end=13,
                                            column_end=26,
                                        ),
                                    ),
                                    location=Location(
                                        line=13,
                                        column=19,
                                        line_end=14,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=13,
                                    column=5,
                                    line_end=14,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="aLastOne",
                                    location=Location(
                                        line=14,
                                        column=5,
                                        line_end=14,
                                        column_end=13,
                                    ),
                                ),
                                arguments=[],
                                type=NonNullTypeNode(
                                    type=ListTypeNode(
                                        type=ListTypeNode(
                                            type=NonNullTypeNode(
                                                type=NamedTypeNode(
                                                    name=NameNode(
                                                        value="Date",
                                                        location=Location(
                                                            line=14,
                                                            column=17,
                                                            line_end=14,
                                                            column_end=21,
                                                        ),
                                                    ),
                                                    location=Location(
                                                        line=14,
                                                        column=17,
                                                        line_end=14,
                                                        column_end=21,
                                                    ),
                                                ),
                                                location=Location(
                                                    line=14,
                                                    column=17,
                                                    line_end=14,
                                                    column_end=22,
                                                ),
                                            ),
                                            location=Location(
                                                line=14,
                                                column=16,
                                                line_end=14,
                                                column_end=23,
                                            ),
                                        ),
                                        location=Location(
                                            line=14,
                                            column=15,
                                            line_end=14,
                                            column_end=24,
                                        ),
                                    ),
                                    location=Location(
                                        line=14,
                                        column=15,
                                        line_end=15,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=14,
                                    column=5,
                                    line_end=15,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=11, column=1, line_end=17, column_end=1
                        ),
                    ),
                    InputObjectTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="UserInfo",
                            location=Location(
                                line=17, column=7, line_end=17, column_end=16
                            ),
                        ),
                        directives=[],
                        fields=[
                            InputValueDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="name",
                                    location=Location(
                                        line=18,
                                        column=5,
                                        line_end=18,
                                        column_end=9,
                                    ),
                                ),
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="String",
                                        location=Location(
                                            line=18,
                                            column=11,
                                            line_end=19,
                                            column_end=5,
                                        ),
                                    ),
                                    location=Location(
                                        line=18,
                                        column=11,
                                        line_end=19,
                                        column_end=5,
                                    ),
                                ),
                                default_value=None,
                                directives=[],
                                location=Location(
                                    line=18,
                                    column=5,
                                    line_end=19,
                                    column_end=5,
                                ),
                            ),
                            InputValueDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="dateOfBirth",
                                    location=Location(
                                        line=19,
                                        column=5,
                                        line_end=19,
                                        column_end=16,
                                    ),
                                ),
                                type=ListTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="Date",
                                            location=Location(
                                                line=19,
                                                column=19,
                                                line_end=19,
                                                column_end=23,
                                            ),
                                        ),
                                        location=Location(
                                            line=19,
                                            column=19,
                                            line_end=19,
                                            column_end=23,
                                        ),
                                    ),
                                    location=Location(
                                        line=19,
                                        column=18,
                                        line_end=20,
                                        column_end=5,
                                    ),
                                ),
                                default_value=None,
                                directives=[],
                                location=Location(
                                    line=19,
                                    column=5,
                                    line_end=20,
                                    column_end=5,
                                ),
                            ),
                            InputValueDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="graphQLFan",
                                    location=Location(
                                        line=20,
                                        column=5,
                                        line_end=20,
                                        column_end=15,
                                    ),
                                ),
                                type=NonNullTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="Boolean",
                                            location=Location(
                                                line=20,
                                                column=17,
                                                line_end=20,
                                                column_end=24,
                                            ),
                                        ),
                                        location=Location(
                                            line=20,
                                            column=17,
                                            line_end=20,
                                            column_end=24,
                                        ),
                                    ),
                                    location=Location(
                                        line=20,
                                        column=17,
                                        line_end=21,
                                        column_end=1,
                                    ),
                                ),
                                default_value=None,
                                directives=[],
                                location=Location(
                                    line=20,
                                    column=5,
                                    line_end=21,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=17, column=1, line_end=25, column_end=1
                        ),
                    ),
                    ObjectTypeDefinitionNode(
                        description=DescriptionNode(
                            value="\nThis is a docstring for the Test Object Type.\n",
                            location=Location(
                                line=25, column=1, line_end=28, column_end=1
                            ),
                        ),
                        name=NameNode(
                            value="Test",
                            location=Location(
                                line=28, column=6, line_end=28, column_end=11
                            ),
                        ),
                        interfaces=[
                            NamedTypeNode(
                                name=NameNode(
                                    value="Unknown",
                                    location=Location(
                                        line=28,
                                        column=22,
                                        line_end=28,
                                        column_end=30,
                                    ),
                                ),
                                location=Location(
                                    line=28,
                                    column=22,
                                    line_end=28,
                                    column_end=30,
                                ),
                            ),
                            NamedTypeNode(
                                name=NameNode(
                                    value="Empty",
                                    location=Location(
                                        line=28,
                                        column=32,
                                        line_end=28,
                                        column_end=38,
                                    ),
                                ),
                                location=Location(
                                    line=28,
                                    column=32,
                                    line_end=28,
                                    column_end=38,
                                ),
                            ),
                        ],
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="enable_cache",
                                    location=Location(
                                        line=28,
                                        column=39,
                                        line_end=28,
                                        column_end=52,
                                    ),
                                ),
                                arguments=[],
                                location=Location(
                                    line=28,
                                    column=38,
                                    line_end=28,
                                    column_end=52,
                                ),
                            )
                        ],
                        fields=[
                            FieldDefinitionNode(
                                description=DescriptionNode(
                                    value="\n    This is a field description :D\n    ",
                                    location=Location(
                                        line=29,
                                        column=5,
                                        line_end=32,
                                        column_end=5,
                                    ),
                                ),
                                name=NameNode(
                                    value="field",
                                    location=Location(
                                        line=32,
                                        column=5,
                                        line_end=32,
                                        column_end=10,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="input",
                                            location=Location(
                                                line=32,
                                                column=11,
                                                line_end=32,
                                                column_end=16,
                                            ),
                                        ),
                                        type=NamedTypeNode(
                                            name=NameNode(
                                                value="InputObject",
                                                location=Location(
                                                    line=32,
                                                    column=18,
                                                    line_end=32,
                                                    column_end=29,
                                                ),
                                            ),
                                            location=Location(
                                                line=32,
                                                column=18,
                                                line_end=32,
                                                column_end=29,
                                            ),
                                        ),
                                        default_value=None,
                                        directives=[],
                                        location=Location(
                                            line=32,
                                            column=11,
                                            line_end=32,
                                            column_end=29,
                                        ),
                                    )
                                ],
                                type=NonNullTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="String",
                                            location=Location(
                                                line=32,
                                                column=32,
                                                line_end=32,
                                                column_end=38,
                                            ),
                                        ),
                                        location=Location(
                                            line=32,
                                            column=32,
                                            line_end=32,
                                            column_end=38,
                                        ),
                                    ),
                                    location=Location(
                                        line=32,
                                        column=32,
                                        line_end=32,
                                        column_end=40,
                                    ),
                                ),
                                directives=[
                                    DirectiveNode(
                                        name=NameNode(
                                            value="deprecated",
                                            location=Location(
                                                line=32,
                                                column=41,
                                                line_end=32,
                                                column_end=51,
                                            ),
                                        ),
                                        arguments=[
                                            ArgumentNode(
                                                name=NameNode(
                                                    value="reason",
                                                    location=Location(
                                                        line=32,
                                                        column=52,
                                                        line_end=32,
                                                        column_end=58,
                                                    ),
                                                ),
                                                value=StringValueNode(
                                                    value="Useless field",
                                                    location=Location(
                                                        line=32,
                                                        column=60,
                                                        line_end=32,
                                                        column_end=75,
                                                    ),
                                                ),
                                                location=Location(
                                                    line=32,
                                                    column=52,
                                                    line_end=32,
                                                    column_end=75,
                                                ),
                                            )
                                        ],
                                        location=Location(
                                            line=32,
                                            column=40,
                                            line_end=33,
                                            column_end=5,
                                        ),
                                    )
                                ],
                                location=Location(
                                    line=29,
                                    column=5,
                                    line_end=33,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="anotherField",
                                    location=Location(
                                        line=33,
                                        column=5,
                                        line_end=33,
                                        column_end=17,
                                    ),
                                ),
                                arguments=[],
                                type=ListTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="Int",
                                            location=Location(
                                                line=33,
                                                column=20,
                                                line_end=33,
                                                column_end=23,
                                            ),
                                        ),
                                        location=Location(
                                            line=33,
                                            column=20,
                                            line_end=33,
                                            column_end=23,
                                        ),
                                    ),
                                    location=Location(
                                        line=33,
                                        column=19,
                                        line_end=33,
                                        column_end=25,
                                    ),
                                ),
                                directives=[
                                    DirectiveNode(
                                        name=NameNode(
                                            value="something",
                                            location=Location(
                                                line=33,
                                                column=26,
                                                line_end=33,
                                                column_end=35,
                                            ),
                                        ),
                                        arguments=[
                                            ArgumentNode(
                                                name=NameNode(
                                                    value="lst",
                                                    location=Location(
                                                        line=34,
                                                        column=9,
                                                        line_end=34,
                                                        column_end=12,
                                                    ),
                                                ),
                                                value=ListValueNode(
                                                    values=[
                                                        StringValueNode(
                                                            value="about",
                                                            location=Location(
                                                                line=34,
                                                                column=15,
                                                                line_end=34,
                                                                column_end=23,
                                                            ),
                                                        ),
                                                        StringValueNode(
                                                            value="stuff",
                                                            location=Location(
                                                                line=34,
                                                                column=23,
                                                                line_end=34,
                                                                column_end=30,
                                                            ),
                                                        ),
                                                    ],
                                                    location=Location(
                                                        line=34,
                                                        column=14,
                                                        line_end=35,
                                                        column_end=9,
                                                    ),
                                                ),
                                                location=Location(
                                                    line=34,
                                                    column=9,
                                                    line_end=35,
                                                    column_end=9,
                                                ),
                                            ),
                                            ArgumentNode(
                                                name=NameNode(
                                                    value="obj",
                                                    location=Location(
                                                        line=35,
                                                        column=9,
                                                        line_end=35,
                                                        column_end=12,
                                                    ),
                                                ),
                                                value=ObjectValueNode(
                                                    fields=[
                                                        ObjectFieldNode(
                                                            name=NameNode(
                                                                value="some",
                                                                location=Location(
                                                                    line=35,
                                                                    column=15,
                                                                    line_end=35,
                                                                    column_end=19,
                                                                ),
                                                            ),
                                                            value=ListValueNode(
                                                                values=[
                                                                    IntValueNode(
                                                                        value=4,
                                                                        location=Location(
                                                                            line=35,
                                                                            column=22,
                                                                            line_end=35,
                                                                            column_end=25,
                                                                        ),
                                                                    ),
                                                                    IntValueNode(
                                                                        value=8,
                                                                        location=Location(
                                                                            line=35,
                                                                            column=25,
                                                                            line_end=35,
                                                                            column_end=28,
                                                                        ),
                                                                    ),
                                                                    IntValueNode(
                                                                        value=16,
                                                                        location=Location(
                                                                            line=35,
                                                                            column=28,
                                                                            line_end=35,
                                                                            column_end=30,
                                                                        ),
                                                                    ),
                                                                ],
                                                                location=Location(
                                                                    line=35,
                                                                    column=21,
                                                                    line_end=35,
                                                                    column_end=33,
                                                                ),
                                                            ),
                                                            location=Location(
                                                                line=35,
                                                                column=15,
                                                                line_end=35,
                                                                column_end=33,
                                                            ),
                                                        ),
                                                        ObjectFieldNode(
                                                            name=NameNode(
                                                                value="complex",
                                                                location=Location(
                                                                    line=35,
                                                                    column=33,
                                                                    line_end=35,
                                                                    column_end=40,
                                                                ),
                                                            ),
                                                            value=ObjectValueNode(
                                                                fields=[
                                                                    ObjectFieldNode(
                                                                        name=NameNode(
                                                                            value="about",
                                                                            location=Location(
                                                                                line=35,
                                                                                column=43,
                                                                                line_end=35,
                                                                                column_end=48,
                                                                            ),
                                                                        ),
                                                                        value=FloatValueNode(
                                                                            value=19.4,
                                                                            location=Location(
                                                                                line=35,
                                                                                column=50,
                                                                                line_end=35,
                                                                                column_end=54,
                                                                            ),
                                                                        ),
                                                                        location=Location(
                                                                            line=35,
                                                                            column=43,
                                                                            line_end=35,
                                                                            column_end=54,
                                                                        ),
                                                                    )
                                                                ],
                                                                location=Location(
                                                                    line=35,
                                                                    column=42,
                                                                    line_end=35,
                                                                    column_end=57,
                                                                ),
                                                            ),
                                                            location=Location(
                                                                line=35,
                                                                column=33,
                                                                line_end=35,
                                                                column_end=57,
                                                            ),
                                                        ),
                                                        ObjectFieldNode(
                                                            name=NameNode(
                                                                value="another",
                                                                location=Location(
                                                                    line=35,
                                                                    column=57,
                                                                    line_end=35,
                                                                    column_end=64,
                                                                ),
                                                            ),
                                                            value=EnumValueNode(
                                                                value="EnumVal",
                                                                location=Location(
                                                                    line=35,
                                                                    column=66,
                                                                    line_end=35,
                                                                    column_end=73,
                                                                ),
                                                            ),
                                                            location=Location(
                                                                line=35,
                                                                column=57,
                                                                line_end=35,
                                                                column_end=73,
                                                            ),
                                                        ),
                                                    ],
                                                    location=Location(
                                                        line=35,
                                                        column=14,
                                                        line_end=36,
                                                        column_end=5,
                                                    ),
                                                ),
                                                location=Location(
                                                    line=35,
                                                    column=9,
                                                    line_end=36,
                                                    column_end=5,
                                                ),
                                            ),
                                        ],
                                        location=Location(
                                            line=33,
                                            column=25,
                                            line_end=37,
                                            column_end=5,
                                        ),
                                    )
                                ],
                                location=Location(
                                    line=33,
                                    column=5,
                                    line_end=37,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="fieldWithDefaultValueArg",
                                    location=Location(
                                        line=37,
                                        column=5,
                                        line_end=37,
                                        column_end=29,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="test",
                                            location=Location(
                                                line=37,
                                                column=30,
                                                line_end=37,
                                                column_end=34,
                                            ),
                                        ),
                                        type=NamedTypeNode(
                                            name=NameNode(
                                                value="String",
                                                location=Location(
                                                    line=37,
                                                    column=36,
                                                    line_end=37,
                                                    column_end=43,
                                                ),
                                            ),
                                            location=Location(
                                                line=37,
                                                column=36,
                                                line_end=37,
                                                column_end=43,
                                            ),
                                        ),
                                        default_value=StringValueNode(
                                            value="default",
                                            location=Location(
                                                line=37,
                                                column=45,
                                                line_end=37,
                                                column_end=54,
                                            ),
                                        ),
                                        directives=[],
                                        location=Location(
                                            line=37,
                                            column=30,
                                            line_end=37,
                                            column_end=54,
                                        ),
                                    )
                                ],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="ID",
                                        location=Location(
                                            line=37,
                                            column=57,
                                            line_end=38,
                                            column_end=5,
                                        ),
                                    ),
                                    location=Location(
                                        line=37,
                                        column=57,
                                        line_end=38,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=37,
                                    column=5,
                                    line_end=38,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="simpleField",
                                    location=Location(
                                        line=38,
                                        column=5,
                                        line_end=38,
                                        column_end=16,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Date",
                                        location=Location(
                                            line=38,
                                            column=18,
                                            line_end=39,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=38,
                                        column=18,
                                        line_end=39,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=38,
                                    column=5,
                                    line_end=39,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=25, column=1, line_end=40, column_end=1
                        ),
                    ),
                ],
                location=Location(line=1, column=1, line_end=40, column_end=1),
            ),
        ),
        (
            os.path.join(_BASE_DIR, "fixtures", "advanced.graphql"),
            DocumentNode(
                definitions=[
                    EnumTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="Episode",
                            location=Location(
                                line=1, column=6, line_end=1, column_end=14
                            ),
                        ),
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="link_db",
                                    location=Location(
                                        line=1,
                                        column=15,
                                        line_end=1,
                                        column_end=22,
                                    ),
                                ),
                                arguments=[
                                    ArgumentNode(
                                        name=NameNode(
                                            value="table",
                                            location=Location(
                                                line=1,
                                                column=23,
                                                line_end=1,
                                                column_end=28,
                                            ),
                                        ),
                                        value=StringValueNode(
                                            value="movies.slug",
                                            location=Location(
                                                line=1,
                                                column=30,
                                                line_end=1,
                                                column_end=43,
                                            ),
                                        ),
                                        location=Location(
                                            line=1,
                                            column=23,
                                            line_end=1,
                                            column_end=43,
                                        ),
                                    )
                                ],
                                location=Location(
                                    line=1,
                                    column=14,
                                    line_end=1,
                                    column_end=45,
                                ),
                            )
                        ],
                        values=[
                            EnumValueDefinitionNode(
                                description=None,
                                name=EnumValueNode(
                                    value="A_NEW_HOPE",
                                    location=Location(
                                        line=2,
                                        column=5,
                                        line_end=3,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=2, column=5, line_end=3, column_end=5
                                ),
                            ),
                            EnumValueDefinitionNode(
                                description=None,
                                name=EnumValueNode(
                                    value="THE_EMPIRE_STRIKES_BACK",
                                    location=Location(
                                        line=3,
                                        column=5,
                                        line_end=4,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=3, column=5, line_end=4, column_end=5
                                ),
                            ),
                            EnumValueDefinitionNode(
                                description=None,
                                name=EnumValueNode(
                                    value="RETURN_OF_THE_JEDI",
                                    location=Location(
                                        line=4,
                                        column=5,
                                        line_end=5,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=4, column=5, line_end=5, column_end=5
                                ),
                            ),
                            EnumValueDefinitionNode(
                                description=None,
                                name=EnumValueNode(
                                    value="THE_PHANTOM_MENACE",
                                    location=Location(
                                        line=5,
                                        column=5,
                                        line_end=6,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=5, column=5, line_end=6, column_end=5
                                ),
                            ),
                            EnumValueDefinitionNode(
                                description=None,
                                name=EnumValueNode(
                                    value="ATTACK_OF_THE_CLONES",
                                    location=Location(
                                        line=6,
                                        column=5,
                                        line_end=7,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=6, column=5, line_end=7, column_end=5
                                ),
                            ),
                            EnumValueDefinitionNode(
                                description=None,
                                name=EnumValueNode(
                                    value="REVENGE_OF_THE_SITH",
                                    location=Location(
                                        line=7,
                                        column=5,
                                        line_end=8,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=7, column=5, line_end=8, column_end=1
                                ),
                            ),
                        ],
                        location=Location(
                            line=1, column=1, line_end=10, column_end=1
                        ),
                    ),
                    InterfaceTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="Character",
                            location=Location(
                                line=10, column=11, line_end=10, column_end=21
                            ),
                        ),
                        directives=[],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="id",
                                    location=Location(
                                        line=11,
                                        column=5,
                                        line_end=11,
                                        column_end=7,
                                    ),
                                ),
                                arguments=[],
                                type=NonNullTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="String",
                                            location=Location(
                                                line=11,
                                                column=9,
                                                line_end=11,
                                                column_end=15,
                                            ),
                                        ),
                                        location=Location(
                                            line=11,
                                            column=9,
                                            line_end=11,
                                            column_end=15,
                                        ),
                                    ),
                                    location=Location(
                                        line=11,
                                        column=9,
                                        line_end=12,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=11,
                                    column=5,
                                    line_end=12,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="name",
                                    location=Location(
                                        line=12,
                                        column=5,
                                        line_end=12,
                                        column_end=9,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="String",
                                        location=Location(
                                            line=12,
                                            column=11,
                                            line_end=13,
                                            column_end=5,
                                        ),
                                    ),
                                    location=Location(
                                        line=12,
                                        column=11,
                                        line_end=13,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=12,
                                    column=5,
                                    line_end=13,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="friends",
                                    location=Location(
                                        line=13,
                                        column=5,
                                        line_end=13,
                                        column_end=12,
                                    ),
                                ),
                                arguments=[],
                                type=ListTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="Character",
                                            location=Location(
                                                line=13,
                                                column=15,
                                                line_end=13,
                                                column_end=24,
                                            ),
                                        ),
                                        location=Location(
                                            line=13,
                                            column=15,
                                            line_end=13,
                                            column_end=24,
                                        ),
                                    ),
                                    location=Location(
                                        line=13,
                                        column=14,
                                        line_end=14,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=13,
                                    column=5,
                                    line_end=14,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="appearsIn",
                                    location=Location(
                                        line=14,
                                        column=5,
                                        line_end=14,
                                        column_end=14,
                                    ),
                                ),
                                arguments=[],
                                type=ListTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="Episode",
                                            location=Location(
                                                line=14,
                                                column=17,
                                                line_end=14,
                                                column_end=24,
                                            ),
                                        ),
                                        location=Location(
                                            line=14,
                                            column=17,
                                            line_end=14,
                                            column_end=24,
                                        ),
                                    ),
                                    location=Location(
                                        line=14,
                                        column=16,
                                        line_end=14,
                                        column_end=26,
                                    ),
                                ),
                                directives=[
                                    DirectiveNode(
                                        name=NameNode(
                                            value="default",
                                            location=Location(
                                                line=14,
                                                column=27,
                                                line_end=14,
                                                column_end=34,
                                            ),
                                        ),
                                        arguments=[
                                            ArgumentNode(
                                                name=NameNode(
                                                    value="value",
                                                    location=Location(
                                                        line=14,
                                                        column=35,
                                                        line_end=14,
                                                        column_end=40,
                                                    ),
                                                ),
                                                value=EnumValueNode(
                                                    value="A_NEW_HOPE",
                                                    location=Location(
                                                        line=14,
                                                        column=42,
                                                        line_end=14,
                                                        column_end=52,
                                                    ),
                                                ),
                                                location=Location(
                                                    line=14,
                                                    column=35,
                                                    line_end=14,
                                                    column_end=52,
                                                ),
                                            )
                                        ],
                                        location=Location(
                                            line=14,
                                            column=26,
                                            line_end=15,
                                            column_end=1,
                                        ),
                                    )
                                ],
                                location=Location(
                                    line=14,
                                    column=5,
                                    line_end=15,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=10, column=1, line_end=17, column_end=1
                        ),
                    ),
                    InterfaceTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="Creature",
                            location=Location(
                                line=17, column=11, line_end=17, column_end=20
                            ),
                        ),
                        directives=[],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="name",
                                    location=Location(
                                        line=18,
                                        column=5,
                                        line_end=18,
                                        column_end=9,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="String",
                                        location=Location(
                                            line=18,
                                            column=11,
                                            line_end=19,
                                            column_end=5,
                                        ),
                                    ),
                                    location=Location(
                                        line=18,
                                        column=11,
                                        line_end=19,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=18,
                                    column=5,
                                    line_end=19,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="species",
                                    location=Location(
                                        line=19,
                                        column=5,
                                        line_end=19,
                                        column_end=12,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="String",
                                        location=Location(
                                            line=19,
                                            column=14,
                                            line_end=20,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=19,
                                        column=14,
                                        line_end=20,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=19,
                                    column=5,
                                    line_end=20,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=17, column=1, line_end=22, column_end=1
                        ),
                    ),
                    InterfaceTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="Vehicle",
                            location=Location(
                                line=22, column=11, line_end=22, column_end=19
                            ),
                        ),
                        directives=[],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="id",
                                    location=Location(
                                        line=23,
                                        column=5,
                                        line_end=23,
                                        column_end=7,
                                    ),
                                ),
                                arguments=[],
                                type=NonNullTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="String",
                                            location=Location(
                                                line=23,
                                                column=9,
                                                line_end=23,
                                                column_end=15,
                                            ),
                                        ),
                                        location=Location(
                                            line=23,
                                            column=9,
                                            line_end=23,
                                            column_end=15,
                                        ),
                                    ),
                                    location=Location(
                                        line=23,
                                        column=9,
                                        line_end=24,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=23,
                                    column=5,
                                    line_end=24,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="name",
                                    location=Location(
                                        line=24,
                                        column=5,
                                        line_end=24,
                                        column_end=9,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="String",
                                        location=Location(
                                            line=24,
                                            column=11,
                                            line_end=25,
                                            column_end=5,
                                        ),
                                    ),
                                    location=Location(
                                        line=24,
                                        column=11,
                                        line_end=25,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=24,
                                    column=5,
                                    line_end=25,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="owner",
                                    location=Location(
                                        line=25,
                                        column=5,
                                        line_end=25,
                                        column_end=10,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Owner",
                                        location=Location(
                                            line=25,
                                            column=12,
                                            line_end=26,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=25,
                                        column=12,
                                        line_end=26,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=25,
                                    column=5,
                                    line_end=26,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=22, column=1, line_end=28, column_end=1
                        ),
                    ),
                    InterfaceTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="Location",
                            location=Location(
                                line=28, column=11, line_end=28, column_end=20
                            ),
                        ),
                        directives=[],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="id",
                                    location=Location(
                                        line=29,
                                        column=5,
                                        line_end=29,
                                        column_end=7,
                                    ),
                                ),
                                arguments=[],
                                type=NonNullTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="String",
                                            location=Location(
                                                line=29,
                                                column=9,
                                                line_end=29,
                                                column_end=15,
                                            ),
                                        ),
                                        location=Location(
                                            line=29,
                                            column=9,
                                            line_end=29,
                                            column_end=15,
                                        ),
                                    ),
                                    location=Location(
                                        line=29,
                                        column=9,
                                        line_end=30,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=29,
                                    column=5,
                                    line_end=30,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="name",
                                    location=Location(
                                        line=30,
                                        column=5,
                                        line_end=30,
                                        column_end=9,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="String",
                                        location=Location(
                                            line=30,
                                            column=11,
                                            line_end=31,
                                            column_end=5,
                                        ),
                                    ),
                                    location=Location(
                                        line=30,
                                        column=11,
                                        line_end=31,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=30,
                                    column=5,
                                    line_end=31,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="coordinates",
                                    location=Location(
                                        line=31,
                                        column=5,
                                        line_end=31,
                                        column_end=16,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="default",
                                            location=Location(
                                                line=31,
                                                column=17,
                                                line_end=31,
                                                column_end=24,
                                            ),
                                        ),
                                        type=ListTypeNode(
                                            type=NamedTypeNode(
                                                name=NameNode(
                                                    value="Float",
                                                    location=Location(
                                                        line=31,
                                                        column=27,
                                                        line_end=31,
                                                        column_end=32,
                                                    ),
                                                ),
                                                location=Location(
                                                    line=31,
                                                    column=27,
                                                    line_end=31,
                                                    column_end=32,
                                                ),
                                            ),
                                            location=Location(
                                                line=31,
                                                column=26,
                                                line_end=31,
                                                column_end=34,
                                            ),
                                        ),
                                        default_value=ListValueNode(
                                            values=[
                                                FloatValueNode(
                                                    value=0.0,
                                                    location=Location(
                                                        line=31,
                                                        column=37,
                                                        line_end=31,
                                                        column_end=42,
                                                    ),
                                                ),
                                                FloatValueNode(
                                                    value=0.0,
                                                    location=Location(
                                                        line=31,
                                                        column=42,
                                                        line_end=31,
                                                        column_end=47,
                                                    ),
                                                ),
                                                FloatValueNode(
                                                    value=0.0,
                                                    location=Location(
                                                        line=31,
                                                        column=47,
                                                        line_end=31,
                                                        column_end=50,
                                                    ),
                                                ),
                                            ],
                                            location=Location(
                                                line=31,
                                                column=36,
                                                line_end=31,
                                                column_end=51,
                                            ),
                                        ),
                                        directives=[],
                                        location=Location(
                                            line=31,
                                            column=17,
                                            line_end=31,
                                            column_end=51,
                                        ),
                                    )
                                ],
                                type=ListTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="Float",
                                            location=Location(
                                                line=31,
                                                column=55,
                                                line_end=31,
                                                column_end=60,
                                            ),
                                        ),
                                        location=Location(
                                            line=31,
                                            column=55,
                                            line_end=31,
                                            column_end=60,
                                        ),
                                    ),
                                    location=Location(
                                        line=31,
                                        column=54,
                                        line_end=32,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=31,
                                    column=5,
                                    line_end=32,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=28, column=1, line_end=34, column_end=1
                        ),
                    ),
                    ObjectTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="Planet",
                            location=Location(
                                line=34, column=6, line_end=34, column_end=13
                            ),
                        ),
                        interfaces=[
                            NamedTypeNode(
                                name=NameNode(
                                    value="Location",
                                    location=Location(
                                        line=34,
                                        column=24,
                                        line_end=34,
                                        column_end=33,
                                    ),
                                ),
                                location=Location(
                                    line=34,
                                    column=24,
                                    line_end=34,
                                    column_end=33,
                                ),
                            )
                        ],
                        directives=[],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="id",
                                    location=Location(
                                        line=35,
                                        column=5,
                                        line_end=35,
                                        column_end=7,
                                    ),
                                ),
                                arguments=[],
                                type=NonNullTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="String",
                                            location=Location(
                                                line=35,
                                                column=9,
                                                line_end=35,
                                                column_end=15,
                                            ),
                                        ),
                                        location=Location(
                                            line=35,
                                            column=9,
                                            line_end=35,
                                            column_end=15,
                                        ),
                                    ),
                                    location=Location(
                                        line=35,
                                        column=9,
                                        line_end=36,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=35,
                                    column=5,
                                    line_end=36,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="atmosphere",
                                    location=Location(
                                        line=36,
                                        column=5,
                                        line_end=36,
                                        column_end=15,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="String",
                                        location=Location(
                                            line=36,
                                            column=17,
                                            line_end=37,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=36,
                                        column=17,
                                        line_end=37,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=36,
                                    column=5,
                                    line_end=37,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=34, column=1, line_end=39, column_end=1
                        ),
                    ),
                    UnionTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="Owner",
                            location=Location(
                                line=39, column=7, line_end=39, column_end=13
                            ),
                        ),
                        directives=[],
                        types=[
                            NamedTypeNode(
                                name=NameNode(
                                    value="Organization",
                                    location=Location(
                                        line=39,
                                        column=15,
                                        line_end=39,
                                        column_end=28,
                                    ),
                                ),
                                location=Location(
                                    line=39,
                                    column=15,
                                    line_end=39,
                                    column_end=28,
                                ),
                            ),
                            NamedTypeNode(
                                name=NameNode(
                                    value="Character",
                                    location=Location(
                                        line=39,
                                        column=30,
                                        line_end=41,
                                        column_end=1,
                                    ),
                                ),
                                location=Location(
                                    line=39,
                                    column=30,
                                    line_end=41,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=39, column=1, line_end=41, column_end=1
                        ),
                    ),
                    ObjectTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="Organization",
                            location=Location(
                                line=41, column=6, line_end=41, column_end=19
                            ),
                        ),
                        interfaces=[],
                        directives=[],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="id",
                                    location=Location(
                                        line=42,
                                        column=5,
                                        line_end=42,
                                        column_end=7,
                                    ),
                                ),
                                arguments=[],
                                type=NonNullTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="String",
                                            location=Location(
                                                line=42,
                                                column=9,
                                                line_end=42,
                                                column_end=15,
                                            ),
                                        ),
                                        location=Location(
                                            line=42,
                                            column=9,
                                            line_end=42,
                                            column_end=15,
                                        ),
                                    ),
                                    location=Location(
                                        line=42,
                                        column=9,
                                        line_end=43,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=42,
                                    column=5,
                                    line_end=43,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="name",
                                    location=Location(
                                        line=43,
                                        column=5,
                                        line_end=43,
                                        column_end=9,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="String",
                                        location=Location(
                                            line=43,
                                            column=11,
                                            line_end=44,
                                            column_end=5,
                                        ),
                                    ),
                                    location=Location(
                                        line=43,
                                        column=11,
                                        line_end=44,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=43,
                                    column=5,
                                    line_end=44,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="members",
                                    location=Location(
                                        line=44,
                                        column=5,
                                        line_end=44,
                                        column_end=12,
                                    ),
                                ),
                                arguments=[],
                                type=ListTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="Character",
                                            location=Location(
                                                line=44,
                                                column=15,
                                                line_end=44,
                                                column_end=24,
                                            ),
                                        ),
                                        location=Location(
                                            line=44,
                                            column=15,
                                            line_end=44,
                                            column_end=24,
                                        ),
                                    ),
                                    location=Location(
                                        line=44,
                                        column=14,
                                        line_end=45,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=44,
                                    column=5,
                                    line_end=45,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=41, column=1, line_end=47, column_end=1
                        ),
                    ),
                    ObjectTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="Human",
                            location=Location(
                                line=47, column=6, line_end=47, column_end=12
                            ),
                        ),
                        interfaces=[
                            NamedTypeNode(
                                name=NameNode(
                                    value="Character",
                                    location=Location(
                                        line=47,
                                        column=23,
                                        line_end=47,
                                        column_end=33,
                                    ),
                                ),
                                location=Location(
                                    line=47,
                                    column=23,
                                    line_end=47,
                                    column_end=33,
                                ),
                            ),
                            NamedTypeNode(
                                name=NameNode(
                                    value="Creature",
                                    location=Location(
                                        line=47,
                                        column=35,
                                        line_end=47,
                                        column_end=44,
                                    ),
                                ),
                                location=Location(
                                    line=47,
                                    column=35,
                                    line_end=47,
                                    column_end=44,
                                ),
                            ),
                        ],
                        directives=[],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="id",
                                    location=Location(
                                        line=48,
                                        column=5,
                                        line_end=48,
                                        column_end=7,
                                    ),
                                ),
                                arguments=[],
                                type=NonNullTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="String",
                                            location=Location(
                                                line=48,
                                                column=9,
                                                line_end=48,
                                                column_end=15,
                                            ),
                                        ),
                                        location=Location(
                                            line=48,
                                            column=9,
                                            line_end=48,
                                            column_end=15,
                                        ),
                                    ),
                                    location=Location(
                                        line=48,
                                        column=9,
                                        line_end=49,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=48,
                                    column=5,
                                    line_end=49,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="name",
                                    location=Location(
                                        line=49,
                                        column=5,
                                        line_end=49,
                                        column_end=9,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="String",
                                        location=Location(
                                            line=49,
                                            column=11,
                                            line_end=50,
                                            column_end=5,
                                        ),
                                    ),
                                    location=Location(
                                        line=49,
                                        column=11,
                                        line_end=50,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=49,
                                    column=5,
                                    line_end=50,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="friends",
                                    location=Location(
                                        line=50,
                                        column=5,
                                        line_end=50,
                                        column_end=12,
                                    ),
                                ),
                                arguments=[],
                                type=ListTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="Character",
                                            location=Location(
                                                line=50,
                                                column=15,
                                                line_end=50,
                                                column_end=24,
                                            ),
                                        ),
                                        location=Location(
                                            line=50,
                                            column=15,
                                            line_end=50,
                                            column_end=24,
                                        ),
                                    ),
                                    location=Location(
                                        line=50,
                                        column=14,
                                        line_end=51,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=50,
                                    column=5,
                                    line_end=51,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="appearsIn",
                                    location=Location(
                                        line=51,
                                        column=5,
                                        line_end=51,
                                        column_end=14,
                                    ),
                                ),
                                arguments=[],
                                type=ListTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="Episode",
                                            location=Location(
                                                line=51,
                                                column=17,
                                                line_end=51,
                                                column_end=24,
                                            ),
                                        ),
                                        location=Location(
                                            line=51,
                                            column=17,
                                            line_end=51,
                                            column_end=24,
                                        ),
                                    ),
                                    location=Location(
                                        line=51,
                                        column=16,
                                        line_end=52,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=51,
                                    column=5,
                                    line_end=52,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="homePlanet",
                                    location=Location(
                                        line=52,
                                        column=5,
                                        line_end=52,
                                        column_end=15,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Location",
                                        location=Location(
                                            line=52,
                                            column=17,
                                            line_end=53,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=52,
                                        column=17,
                                        line_end=53,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=52,
                                    column=5,
                                    line_end=53,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=47, column=1, line_end=55, column_end=1
                        ),
                    ),
                    ObjectTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="Droid",
                            location=Location(
                                line=55, column=6, line_end=55, column_end=12
                            ),
                        ),
                        interfaces=[
                            NamedTypeNode(
                                name=NameNode(
                                    value="Character",
                                    location=Location(
                                        line=55,
                                        column=23,
                                        line_end=55,
                                        column_end=33,
                                    ),
                                ),
                                location=Location(
                                    line=55,
                                    column=23,
                                    line_end=55,
                                    column_end=33,
                                ),
                            )
                        ],
                        directives=[],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="id",
                                    location=Location(
                                        line=56,
                                        column=5,
                                        line_end=56,
                                        column_end=7,
                                    ),
                                ),
                                arguments=[],
                                type=NonNullTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="String",
                                            location=Location(
                                                line=56,
                                                column=9,
                                                line_end=56,
                                                column_end=15,
                                            ),
                                        ),
                                        location=Location(
                                            line=56,
                                            column=9,
                                            line_end=56,
                                            column_end=15,
                                        ),
                                    ),
                                    location=Location(
                                        line=56,
                                        column=9,
                                        line_end=57,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=56,
                                    column=5,
                                    line_end=57,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="name",
                                    location=Location(
                                        line=57,
                                        column=5,
                                        line_end=57,
                                        column_end=9,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="String",
                                        location=Location(
                                            line=57,
                                            column=11,
                                            line_end=58,
                                            column_end=5,
                                        ),
                                    ),
                                    location=Location(
                                        line=57,
                                        column=11,
                                        line_end=58,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=57,
                                    column=5,
                                    line_end=58,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="friends",
                                    location=Location(
                                        line=58,
                                        column=5,
                                        line_end=58,
                                        column_end=12,
                                    ),
                                ),
                                arguments=[],
                                type=ListTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="Character",
                                            location=Location(
                                                line=58,
                                                column=15,
                                                line_end=58,
                                                column_end=24,
                                            ),
                                        ),
                                        location=Location(
                                            line=58,
                                            column=15,
                                            line_end=58,
                                            column_end=24,
                                        ),
                                    ),
                                    location=Location(
                                        line=58,
                                        column=14,
                                        line_end=58,
                                        column_end=26,
                                    ),
                                ),
                                directives=[
                                    DirectiveNode(
                                        name=NameNode(
                                            value="deprecated",
                                            location=Location(
                                                line=58,
                                                column=27,
                                                line_end=58,
                                                column_end=37,
                                            ),
                                        ),
                                        arguments=[
                                            ArgumentNode(
                                                name=NameNode(
                                                    value="reason",
                                                    location=Location(
                                                        line=58,
                                                        column=38,
                                                        line_end=58,
                                                        column_end=44,
                                                    ),
                                                ),
                                                value=StringValueNode(
                                                    value="Droids can't have friends. Use the acquaintances field.",
                                                    location=Location(
                                                        line=58,
                                                        column=46,
                                                        line_end=58,
                                                        column_end=103,
                                                    ),
                                                ),
                                                location=Location(
                                                    line=58,
                                                    column=38,
                                                    line_end=58,
                                                    column_end=103,
                                                ),
                                            )
                                        ],
                                        location=Location(
                                            line=58,
                                            column=26,
                                            line_end=59,
                                            column_end=5,
                                        ),
                                    )
                                ],
                                location=Location(
                                    line=58,
                                    column=5,
                                    line_end=59,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="acquaintances",
                                    location=Location(
                                        line=59,
                                        column=5,
                                        line_end=59,
                                        column_end=18,
                                    ),
                                ),
                                arguments=[],
                                type=ListTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="Character",
                                            location=Location(
                                                line=59,
                                                column=21,
                                                line_end=59,
                                                column_end=30,
                                            ),
                                        ),
                                        location=Location(
                                            line=59,
                                            column=21,
                                            line_end=59,
                                            column_end=30,
                                        ),
                                    ),
                                    location=Location(
                                        line=59,
                                        column=20,
                                        line_end=60,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=59,
                                    column=5,
                                    line_end=60,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="appearsIn",
                                    location=Location(
                                        line=60,
                                        column=5,
                                        line_end=60,
                                        column_end=14,
                                    ),
                                ),
                                arguments=[],
                                type=ListTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="Episode",
                                            location=Location(
                                                line=60,
                                                column=17,
                                                line_end=60,
                                                column_end=24,
                                            ),
                                        ),
                                        location=Location(
                                            line=60,
                                            column=17,
                                            line_end=60,
                                            column_end=24,
                                        ),
                                    ),
                                    location=Location(
                                        line=60,
                                        column=16,
                                        line_end=61,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=60,
                                    column=5,
                                    line_end=61,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="primaryFunction",
                                    location=Location(
                                        line=61,
                                        column=5,
                                        line_end=61,
                                        column_end=20,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="String",
                                        location=Location(
                                            line=61,
                                            column=22,
                                            line_end=62,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=61,
                                        column=22,
                                        line_end=62,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=61,
                                    column=5,
                                    line_end=62,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=55, column=1, line_end=64, column_end=1
                        ),
                    ),
                    ObjectTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="Query",
                            location=Location(
                                line=64, column=6, line_end=64, column_end=12
                            ),
                        ),
                        interfaces=[],
                        directives=[],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="hero",
                                    location=Location(
                                        line=65,
                                        column=5,
                                        line_end=65,
                                        column_end=9,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="episode",
                                            location=Location(
                                                line=65,
                                                column=10,
                                                line_end=65,
                                                column_end=17,
                                            ),
                                        ),
                                        type=NamedTypeNode(
                                            name=NameNode(
                                                value="Episode",
                                                location=Location(
                                                    line=65,
                                                    column=19,
                                                    line_end=65,
                                                    column_end=26,
                                                ),
                                            ),
                                            location=Location(
                                                line=65,
                                                column=19,
                                                line_end=65,
                                                column_end=26,
                                            ),
                                        ),
                                        default_value=None,
                                        directives=[],
                                        location=Location(
                                            line=65,
                                            column=10,
                                            line_end=65,
                                            column_end=26,
                                        ),
                                    )
                                ],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Character",
                                        location=Location(
                                            line=65,
                                            column=29,
                                            line_end=66,
                                            column_end=5,
                                        ),
                                    ),
                                    location=Location(
                                        line=65,
                                        column=29,
                                        line_end=66,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=65,
                                    column=5,
                                    line_end=66,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="human",
                                    location=Location(
                                        line=66,
                                        column=5,
                                        line_end=66,
                                        column_end=10,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="id",
                                            location=Location(
                                                line=66,
                                                column=11,
                                                line_end=66,
                                                column_end=13,
                                            ),
                                        ),
                                        type=NonNullTypeNode(
                                            type=NamedTypeNode(
                                                name=NameNode(
                                                    value="String",
                                                    location=Location(
                                                        line=66,
                                                        column=15,
                                                        line_end=66,
                                                        column_end=21,
                                                    ),
                                                ),
                                                location=Location(
                                                    line=66,
                                                    column=15,
                                                    line_end=66,
                                                    column_end=21,
                                                ),
                                            ),
                                            location=Location(
                                                line=66,
                                                column=15,
                                                line_end=66,
                                                column_end=22,
                                            ),
                                        ),
                                        default_value=None,
                                        directives=[],
                                        location=Location(
                                            line=66,
                                            column=11,
                                            line_end=66,
                                            column_end=22,
                                        ),
                                    )
                                ],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Human",
                                        location=Location(
                                            line=66,
                                            column=25,
                                            line_end=67,
                                            column_end=5,
                                        ),
                                    ),
                                    location=Location(
                                        line=66,
                                        column=25,
                                        line_end=67,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=66,
                                    column=5,
                                    line_end=67,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="droid",
                                    location=Location(
                                        line=67,
                                        column=5,
                                        line_end=67,
                                        column_end=10,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="id",
                                            location=Location(
                                                line=67,
                                                column=11,
                                                line_end=67,
                                                column_end=13,
                                            ),
                                        ),
                                        type=NonNullTypeNode(
                                            type=NamedTypeNode(
                                                name=NameNode(
                                                    value="String",
                                                    location=Location(
                                                        line=67,
                                                        column=15,
                                                        line_end=67,
                                                        column_end=21,
                                                    ),
                                                ),
                                                location=Location(
                                                    line=67,
                                                    column=15,
                                                    line_end=67,
                                                    column_end=21,
                                                ),
                                            ),
                                            location=Location(
                                                line=67,
                                                column=15,
                                                line_end=67,
                                                column_end=22,
                                            ),
                                        ),
                                        default_value=None,
                                        directives=[],
                                        location=Location(
                                            line=67,
                                            column=11,
                                            line_end=67,
                                            column_end=22,
                                        ),
                                    )
                                ],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Droid",
                                        location=Location(
                                            line=67,
                                            column=25,
                                            line_end=68,
                                            column_end=5,
                                        ),
                                    ),
                                    location=Location(
                                        line=67,
                                        column=25,
                                        line_end=68,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=67,
                                    column=5,
                                    line_end=68,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="characters",
                                    location=Location(
                                        line=68,
                                        column=5,
                                        line_end=68,
                                        column_end=15,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="filter",
                                            location=Location(
                                                line=68,
                                                column=16,
                                                line_end=68,
                                                column_end=22,
                                            ),
                                        ),
                                        type=NamedTypeNode(
                                            name=NameNode(
                                                value="FilterCharacters",
                                                location=Location(
                                                    line=68,
                                                    column=24,
                                                    line_end=68,
                                                    column_end=40,
                                                ),
                                            ),
                                            location=Location(
                                                line=68,
                                                column=24,
                                                line_end=68,
                                                column_end=40,
                                            ),
                                        ),
                                        default_value=None,
                                        directives=[],
                                        location=Location(
                                            line=68,
                                            column=16,
                                            line_end=68,
                                            column_end=40,
                                        ),
                                    )
                                ],
                                type=ListTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="Characters",
                                            location=Location(
                                                line=68,
                                                column=44,
                                                line_end=68,
                                                column_end=54,
                                            ),
                                        ),
                                        location=Location(
                                            line=68,
                                            column=44,
                                            line_end=68,
                                            column_end=54,
                                        ),
                                    ),
                                    location=Location(
                                        line=68,
                                        column=43,
                                        line_end=69,
                                        column_end=5,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=68,
                                    column=5,
                                    line_end=69,
                                    column_end=5,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="planet",
                                    location=Location(
                                        line=69,
                                        column=5,
                                        line_end=69,
                                        column_end=11,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="id",
                                            location=Location(
                                                line=69,
                                                column=12,
                                                line_end=69,
                                                column_end=14,
                                            ),
                                        ),
                                        type=NonNullTypeNode(
                                            type=NamedTypeNode(
                                                name=NameNode(
                                                    value="String",
                                                    location=Location(
                                                        line=69,
                                                        column=16,
                                                        line_end=69,
                                                        column_end=22,
                                                    ),
                                                ),
                                                location=Location(
                                                    line=69,
                                                    column=16,
                                                    line_end=69,
                                                    column_end=22,
                                                ),
                                            ),
                                            location=Location(
                                                line=69,
                                                column=16,
                                                line_end=69,
                                                column_end=23,
                                            ),
                                        ),
                                        default_value=None,
                                        directives=[],
                                        location=Location(
                                            line=69,
                                            column=12,
                                            line_end=69,
                                            column_end=23,
                                        ),
                                    )
                                ],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Planet",
                                        location=Location(
                                            line=69,
                                            column=26,
                                            line_end=70,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=69,
                                        column=26,
                                        line_end=70,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=69,
                                    column=5,
                                    line_end=70,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=64, column=1, line_end=72, column_end=1
                        ),
                    ),
                    InputObjectTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="FilterCharacters",
                            location=Location(
                                line=72, column=7, line_end=72, column_end=24
                            ),
                        ),
                        directives=[],
                        fields=[
                            InputValueDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="limit",
                                    location=Location(
                                        line=73,
                                        column=5,
                                        line_end=73,
                                        column_end=10,
                                    ),
                                ),
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Int",
                                        location=Location(
                                            line=73,
                                            column=12,
                                            line_end=74,
                                            column_end=5,
                                        ),
                                    ),
                                    location=Location(
                                        line=73,
                                        column=12,
                                        line_end=74,
                                        column_end=5,
                                    ),
                                ),
                                default_value=None,
                                directives=[],
                                location=Location(
                                    line=73,
                                    column=5,
                                    line_end=74,
                                    column_end=5,
                                ),
                            ),
                            InputValueDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="sinceEpisode",
                                    location=Location(
                                        line=74,
                                        column=5,
                                        line_end=74,
                                        column_end=17,
                                    ),
                                ),
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Episode",
                                        location=Location(
                                            line=74,
                                            column=19,
                                            line_end=75,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=74,
                                        column=19,
                                        line_end=75,
                                        column_end=1,
                                    ),
                                ),
                                default_value=None,
                                directives=[],
                                location=Location(
                                    line=74,
                                    column=5,
                                    line_end=75,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=72, column=1, line_end=77, column_end=1
                        ),
                    ),
                    ScalarTypeDefinitionNode(
                        description=DescriptionNode(
                            value="\nA custom scalar to represent time in the StarWars universe.\nIt should support nanoseconds and conversion to/from a flick.\n",
                            location=Location(
                                line=77, column=1, line_end=81, column_end=1
                            ),
                        ),
                        name=NameNode(
                            value="Date",
                            location=Location(
                                line=81, column=8, line_end=83, column_end=1
                            ),
                        ),
                        directives=[],
                        location=Location(
                            line=77, column=1, line_end=83, column_end=1
                        ),
                    ),
                    ObjectTypeExtensionNode(
                        name=NameNode(
                            value="Human",
                            location=Location(
                                line=83, column=13, line_end=83, column_end=19
                            ),
                        ),
                        interfaces=[],
                        directives=[],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="born",
                                    location=Location(
                                        line=84,
                                        column=5,
                                        line_end=84,
                                        column_end=9,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Date",
                                        location=Location(
                                            line=84,
                                            column=11,
                                            line_end=84,
                                            column_end=16,
                                        ),
                                    ),
                                    location=Location(
                                        line=84,
                                        column=11,
                                        line_end=84,
                                        column_end=16,
                                    ),
                                ),
                                directives=[
                                    DirectiveNode(
                                        name=NameNode(
                                            value="limit",
                                            location=Location(
                                                line=84,
                                                column=17,
                                                line_end=84,
                                                column_end=22,
                                            ),
                                        ),
                                        arguments=[
                                            ArgumentNode(
                                                name=NameNode(
                                                    value="min",
                                                    location=Location(
                                                        line=84,
                                                        column=23,
                                                        line_end=84,
                                                        column_end=26,
                                                    ),
                                                ),
                                                value=IntValueNode(
                                                    value=0,
                                                    location=Location(
                                                        line=84,
                                                        column=28,
                                                        line_end=84,
                                                        column_end=29,
                                                    ),
                                                ),
                                                location=Location(
                                                    line=84,
                                                    column=23,
                                                    line_end=84,
                                                    column_end=29,
                                                ),
                                            )
                                        ],
                                        location=Location(
                                            line=84,
                                            column=16,
                                            line_end=85,
                                            column_end=1,
                                        ),
                                    )
                                ],
                                location=Location(
                                    line=84,
                                    column=5,
                                    line_end=85,
                                    column_end=1,
                                ),
                            )
                        ],
                        location=Location(
                            line=83, column=1, line_end=87, column_end=1
                        ),
                    ),
                    ObjectTypeExtensionNode(
                        name=NameNode(
                            value="Droid",
                            location=Location(
                                line=87, column=13, line_end=87, column_end=19
                            ),
                        ),
                        interfaces=[],
                        directives=[],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="produced",
                                    location=Location(
                                        line=88,
                                        column=5,
                                        line_end=88,
                                        column_end=13,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Date",
                                        location=Location(
                                            line=88,
                                            column=15,
                                            line_end=89,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=88,
                                        column=15,
                                        line_end=89,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=88,
                                    column=5,
                                    line_end=89,
                                    column_end=1,
                                ),
                            )
                        ],
                        location=Location(
                            line=87, column=1, line_end=91, column_end=1
                        ),
                    ),
                    InputObjectTypeExtensionNode(
                        name=NameNode(
                            value="FilterCharacters",
                            location=Location(
                                line=91, column=14, line_end=91, column_end=31
                            ),
                        ),
                        directives=[],
                        fields=[
                            InputValueDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="existsSince",
                                    location=Location(
                                        line=92,
                                        column=5,
                                        line_end=92,
                                        column_end=16,
                                    ),
                                ),
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Date",
                                        location=Location(
                                            line=92,
                                            column=18,
                                            line_end=93,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=92,
                                        column=18,
                                        line_end=93,
                                        column_end=1,
                                    ),
                                ),
                                default_value=None,
                                directives=[],
                                location=Location(
                                    line=92,
                                    column=5,
                                    line_end=93,
                                    column_end=1,
                                ),
                            )
                        ],
                        location=Location(
                            line=91, column=1, line_end=94, column_end=1
                        ),
                    ),
                ],
                location=Location(line=1, column=1, line_end=94, column_end=1),
            ),
        ),
        (
            os.path.join(_BASE_DIR, "fixtures", "kitchen-sink.graphql"),
            DocumentNode(
                definitions=[
                    SchemaDefinitionNode(
                        directives=[],
                        operation_type_definitions=[
                            OperationTypeDefinitionNode(
                                operation_type="query",
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="QueryType",
                                        location=Location(
                                            line=2,
                                            column=10,
                                            line_end=3,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=2,
                                        column=10,
                                        line_end=3,
                                        column_end=3,
                                    ),
                                ),
                                location=Location(
                                    line=2, column=3, line_end=3, column_end=3
                                ),
                            ),
                            OperationTypeDefinitionNode(
                                operation_type="mutation",
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="MutationType",
                                        location=Location(
                                            line=3,
                                            column=13,
                                            line_end=4,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=3,
                                        column=13,
                                        line_end=4,
                                        column_end=1,
                                    ),
                                ),
                                location=Location(
                                    line=3, column=3, line_end=4, column_end=1
                                ),
                            ),
                        ],
                        location=Location(
                            line=1, column=1, line_end=6, column_end=1
                        ),
                    ),
                    ObjectTypeDefinitionNode(
                        description=DescriptionNode(
                            value="\nThis is a description\nof the `Foo` type.\n",
                            location=Location(
                                line=6, column=1, line_end=10, column_end=1
                            ),
                        ),
                        name=NameNode(
                            value="Foo",
                            location=Location(
                                line=10, column=6, line_end=10, column_end=10
                            ),
                        ),
                        interfaces=[
                            NamedTypeNode(
                                name=NameNode(
                                    value="Bar",
                                    location=Location(
                                        line=10,
                                        column=21,
                                        line_end=10,
                                        column_end=25,
                                    ),
                                ),
                                location=Location(
                                    line=10,
                                    column=21,
                                    line_end=10,
                                    column_end=25,
                                ),
                            ),
                            NamedTypeNode(
                                name=NameNode(
                                    value="Baz",
                                    location=Location(
                                        line=10,
                                        column=27,
                                        line_end=10,
                                        column_end=31,
                                    ),
                                ),
                                location=Location(
                                    line=10,
                                    column=27,
                                    line_end=10,
                                    column_end=31,
                                ),
                            ),
                        ],
                        directives=[],
                        fields=[
                            FieldDefinitionNode(
                                description=DescriptionNode(
                                    value="Description of the `one` field.",
                                    location=Location(
                                        line=11,
                                        column=3,
                                        line_end=12,
                                        column_end=3,
                                    ),
                                ),
                                name=NameNode(
                                    value="one",
                                    location=Location(
                                        line=12,
                                        column=3,
                                        line_end=12,
                                        column_end=6,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Type",
                                        location=Location(
                                            line=12,
                                            column=8,
                                            line_end=13,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=12,
                                        column=8,
                                        line_end=13,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=11,
                                    column=3,
                                    line_end=13,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=DescriptionNode(
                                    value="\n  This is a description of the `two` field.\n  ",
                                    location=Location(
                                        line=13,
                                        column=3,
                                        line_end=16,
                                        column_end=3,
                                    ),
                                ),
                                name=NameNode(
                                    value="two",
                                    location=Location(
                                        line=16,
                                        column=3,
                                        line_end=16,
                                        column_end=6,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=DescriptionNode(
                                            value="\n    This is a description of the `argument` argument.\n    ",
                                            location=Location(
                                                line=17,
                                                column=5,
                                                line_end=20,
                                                column_end=5,
                                            ),
                                        ),
                                        name=NameNode(
                                            value="argument",
                                            location=Location(
                                                line=20,
                                                column=5,
                                                line_end=20,
                                                column_end=13,
                                            ),
                                        ),
                                        type=NonNullTypeNode(
                                            type=NamedTypeNode(
                                                name=NameNode(
                                                    value="InputType",
                                                    location=Location(
                                                        line=20,
                                                        column=15,
                                                        line_end=20,
                                                        column_end=24,
                                                    ),
                                                ),
                                                location=Location(
                                                    line=20,
                                                    column=15,
                                                    line_end=20,
                                                    column_end=24,
                                                ),
                                            ),
                                            location=Location(
                                                line=20,
                                                column=15,
                                                line_end=21,
                                                column_end=3,
                                            ),
                                        ),
                                        default_value=None,
                                        directives=[],
                                        location=Location(
                                            line=17,
                                            column=5,
                                            line_end=21,
                                            column_end=3,
                                        ),
                                    )
                                ],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Type",
                                        location=Location(
                                            line=21,
                                            column=6,
                                            line_end=22,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=21,
                                        column=6,
                                        line_end=22,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=13,
                                    column=3,
                                    line_end=22,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=DescriptionNode(
                                    value="This is a description of the `three` field.",
                                    location=Location(
                                        line=22,
                                        column=3,
                                        line_end=23,
                                        column_end=3,
                                    ),
                                ),
                                name=NameNode(
                                    value="three",
                                    location=Location(
                                        line=23,
                                        column=3,
                                        line_end=23,
                                        column_end=8,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="argument",
                                            location=Location(
                                                line=23,
                                                column=9,
                                                line_end=23,
                                                column_end=17,
                                            ),
                                        ),
                                        type=NamedTypeNode(
                                            name=NameNode(
                                                value="InputType",
                                                location=Location(
                                                    line=23,
                                                    column=19,
                                                    line_end=23,
                                                    column_end=30,
                                                ),
                                            ),
                                            location=Location(
                                                line=23,
                                                column=19,
                                                line_end=23,
                                                column_end=30,
                                            ),
                                        ),
                                        default_value=None,
                                        directives=[],
                                        location=Location(
                                            line=23,
                                            column=9,
                                            line_end=23,
                                            column_end=30,
                                        ),
                                    ),
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="other",
                                            location=Location(
                                                line=23,
                                                column=30,
                                                line_end=23,
                                                column_end=35,
                                            ),
                                        ),
                                        type=NamedTypeNode(
                                            name=NameNode(
                                                value="String",
                                                location=Location(
                                                    line=23,
                                                    column=37,
                                                    line_end=23,
                                                    column_end=43,
                                                ),
                                            ),
                                            location=Location(
                                                line=23,
                                                column=37,
                                                line_end=23,
                                                column_end=43,
                                            ),
                                        ),
                                        default_value=None,
                                        directives=[],
                                        location=Location(
                                            line=23,
                                            column=30,
                                            line_end=23,
                                            column_end=43,
                                        ),
                                    ),
                                ],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Int",
                                        location=Location(
                                            line=23,
                                            column=46,
                                            line_end=24,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=23,
                                        column=46,
                                        line_end=24,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=22,
                                    column=3,
                                    line_end=24,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="four",
                                    location=Location(
                                        line=24,
                                        column=3,
                                        line_end=24,
                                        column_end=7,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="argument",
                                            location=Location(
                                                line=24,
                                                column=8,
                                                line_end=24,
                                                column_end=16,
                                            ),
                                        ),
                                        type=NamedTypeNode(
                                            name=NameNode(
                                                value="String",
                                                location=Location(
                                                    line=24,
                                                    column=18,
                                                    line_end=24,
                                                    column_end=25,
                                                ),
                                            ),
                                            location=Location(
                                                line=24,
                                                column=18,
                                                line_end=24,
                                                column_end=25,
                                            ),
                                        ),
                                        default_value=StringValueNode(
                                            value="string",
                                            location=Location(
                                                line=24,
                                                column=27,
                                                line_end=24,
                                                column_end=35,
                                            ),
                                        ),
                                        directives=[],
                                        location=Location(
                                            line=24,
                                            column=8,
                                            line_end=24,
                                            column_end=35,
                                        ),
                                    )
                                ],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="String",
                                        location=Location(
                                            line=24,
                                            column=38,
                                            line_end=25,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=24,
                                        column=38,
                                        line_end=25,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=24,
                                    column=3,
                                    line_end=25,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="five",
                                    location=Location(
                                        line=25,
                                        column=3,
                                        line_end=25,
                                        column_end=7,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="argument",
                                            location=Location(
                                                line=25,
                                                column=8,
                                                line_end=25,
                                                column_end=16,
                                            ),
                                        ),
                                        type=ListTypeNode(
                                            type=NamedTypeNode(
                                                name=NameNode(
                                                    value="String",
                                                    location=Location(
                                                        line=25,
                                                        column=19,
                                                        line_end=25,
                                                        column_end=25,
                                                    ),
                                                ),
                                                location=Location(
                                                    line=25,
                                                    column=19,
                                                    line_end=25,
                                                    column_end=25,
                                                ),
                                            ),
                                            location=Location(
                                                line=25,
                                                column=18,
                                                line_end=25,
                                                column_end=27,
                                            ),
                                        ),
                                        default_value=ListValueNode(
                                            values=[
                                                StringValueNode(
                                                    value="string",
                                                    location=Location(
                                                        line=25,
                                                        column=30,
                                                        line_end=25,
                                                        column_end=40,
                                                    ),
                                                ),
                                                StringValueNode(
                                                    value="string",
                                                    location=Location(
                                                        line=25,
                                                        column=40,
                                                        line_end=25,
                                                        column_end=48,
                                                    ),
                                                ),
                                            ],
                                            location=Location(
                                                line=25,
                                                column=29,
                                                line_end=25,
                                                column_end=49,
                                            ),
                                        ),
                                        directives=[],
                                        location=Location(
                                            line=25,
                                            column=8,
                                            line_end=25,
                                            column_end=49,
                                        ),
                                    )
                                ],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="String",
                                        location=Location(
                                            line=25,
                                            column=52,
                                            line_end=26,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=25,
                                        column=52,
                                        line_end=26,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=25,
                                    column=3,
                                    line_end=26,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="six",
                                    location=Location(
                                        line=26,
                                        column=3,
                                        line_end=26,
                                        column_end=6,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="argument",
                                            location=Location(
                                                line=26,
                                                column=7,
                                                line_end=26,
                                                column_end=15,
                                            ),
                                        ),
                                        type=NamedTypeNode(
                                            name=NameNode(
                                                value="InputType",
                                                location=Location(
                                                    line=26,
                                                    column=17,
                                                    line_end=26,
                                                    column_end=27,
                                                ),
                                            ),
                                            location=Location(
                                                line=26,
                                                column=17,
                                                line_end=26,
                                                column_end=27,
                                            ),
                                        ),
                                        default_value=ObjectValueNode(
                                            fields=[
                                                ObjectFieldNode(
                                                    name=NameNode(
                                                        value="key",
                                                        location=Location(
                                                            line=26,
                                                            column=30,
                                                            line_end=26,
                                                            column_end=33,
                                                        ),
                                                    ),
                                                    value=StringValueNode(
                                                        value="value",
                                                        location=Location(
                                                            line=26,
                                                            column=35,
                                                            line_end=26,
                                                            column_end=42,
                                                        ),
                                                    ),
                                                    location=Location(
                                                        line=26,
                                                        column=30,
                                                        line_end=26,
                                                        column_end=42,
                                                    ),
                                                )
                                            ],
                                            location=Location(
                                                line=26,
                                                column=29,
                                                line_end=26,
                                                column_end=43,
                                            ),
                                        ),
                                        directives=[],
                                        location=Location(
                                            line=26,
                                            column=7,
                                            line_end=26,
                                            column_end=43,
                                        ),
                                    )
                                ],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Type",
                                        location=Location(
                                            line=26,
                                            column=46,
                                            line_end=27,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=26,
                                        column=46,
                                        line_end=27,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=26,
                                    column=3,
                                    line_end=27,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="seven",
                                    location=Location(
                                        line=27,
                                        column=3,
                                        line_end=27,
                                        column_end=8,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="argument",
                                            location=Location(
                                                line=27,
                                                column=9,
                                                line_end=27,
                                                column_end=17,
                                            ),
                                        ),
                                        type=NamedTypeNode(
                                            name=NameNode(
                                                value="Int",
                                                location=Location(
                                                    line=27,
                                                    column=19,
                                                    line_end=27,
                                                    column_end=23,
                                                ),
                                            ),
                                            location=Location(
                                                line=27,
                                                column=19,
                                                line_end=27,
                                                column_end=23,
                                            ),
                                        ),
                                        default_value=NullValueNode(
                                            location=Location(
                                                line=27,
                                                column=25,
                                                line_end=27,
                                                column_end=29,
                                            )
                                        ),
                                        directives=[],
                                        location=Location(
                                            line=27,
                                            column=9,
                                            line_end=27,
                                            column_end=29,
                                        ),
                                    )
                                ],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Type",
                                        location=Location(
                                            line=27,
                                            column=32,
                                            line_end=28,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=27,
                                        column=32,
                                        line_end=28,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=27,
                                    column=3,
                                    line_end=28,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="height",
                                    location=Location(
                                        line=28,
                                        column=3,
                                        line_end=28,
                                        column_end=9,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="argument",
                                            location=Location(
                                                line=28,
                                                column=10,
                                                line_end=28,
                                                column_end=18,
                                            ),
                                        ),
                                        type=NamedTypeNode(
                                            name=NameNode(
                                                value="Boolean",
                                                location=Location(
                                                    line=28,
                                                    column=20,
                                                    line_end=28,
                                                    column_end=28,
                                                ),
                                            ),
                                            location=Location(
                                                line=28,
                                                column=20,
                                                line_end=28,
                                                column_end=28,
                                            ),
                                        ),
                                        default_value=BooleanValueNode(
                                            value=False,
                                            location=Location(
                                                line=28,
                                                column=30,
                                                line_end=28,
                                                column_end=35,
                                            ),
                                        ),
                                        directives=[],
                                        location=Location(
                                            line=28,
                                            column=10,
                                            line_end=28,
                                            column_end=35,
                                        ),
                                    )
                                ],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=28,
                                            column=38,
                                            line_end=29,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=28,
                                        column=38,
                                        line_end=29,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=28,
                                    column=3,
                                    line_end=29,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=6, column=1, line_end=31, column_end=1
                        ),
                    ),
                    ObjectTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="AnnotatedObject",
                            location=Location(
                                line=31, column=6, line_end=31, column_end=22
                            ),
                        ),
                        interfaces=[],
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="onObject",
                                    location=Location(
                                        line=31,
                                        column=23,
                                        line_end=31,
                                        column_end=31,
                                    ),
                                ),
                                arguments=[
                                    ArgumentNode(
                                        name=NameNode(
                                            value="arg",
                                            location=Location(
                                                line=31,
                                                column=32,
                                                line_end=31,
                                                column_end=35,
                                            ),
                                        ),
                                        value=StringValueNode(
                                            value="value",
                                            location=Location(
                                                line=31,
                                                column=37,
                                                line_end=31,
                                                column_end=44,
                                            ),
                                        ),
                                        location=Location(
                                            line=31,
                                            column=32,
                                            line_end=31,
                                            column_end=44,
                                        ),
                                    )
                                ],
                                location=Location(
                                    line=31,
                                    column=22,
                                    line_end=31,
                                    column_end=46,
                                ),
                            )
                        ],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="annotatedField",
                                    location=Location(
                                        line=32,
                                        column=3,
                                        line_end=32,
                                        column_end=17,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="arg",
                                            location=Location(
                                                line=32,
                                                column=18,
                                                line_end=32,
                                                column_end=21,
                                            ),
                                        ),
                                        type=NamedTypeNode(
                                            name=NameNode(
                                                value="Type",
                                                location=Location(
                                                    line=32,
                                                    column=23,
                                                    line_end=32,
                                                    column_end=28,
                                                ),
                                            ),
                                            location=Location(
                                                line=32,
                                                column=23,
                                                line_end=32,
                                                column_end=28,
                                            ),
                                        ),
                                        default_value=StringValueNode(
                                            value="default",
                                            location=Location(
                                                line=32,
                                                column=30,
                                                line_end=32,
                                                column_end=40,
                                            ),
                                        ),
                                        directives=[
                                            DirectiveNode(
                                                name=NameNode(
                                                    value="onArgumentDefinition",
                                                    location=Location(
                                                        line=32,
                                                        column=41,
                                                        line_end=32,
                                                        column_end=61,
                                                    ),
                                                ),
                                                arguments=[],
                                                location=Location(
                                                    line=32,
                                                    column=40,
                                                    line_end=32,
                                                    column_end=61,
                                                ),
                                            )
                                        ],
                                        location=Location(
                                            line=32,
                                            column=18,
                                            line_end=32,
                                            column_end=61,
                                        ),
                                    )
                                ],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Type",
                                        location=Location(
                                            line=32,
                                            column=64,
                                            line_end=32,
                                            column_end=69,
                                        ),
                                    ),
                                    location=Location(
                                        line=32,
                                        column=64,
                                        line_end=32,
                                        column_end=69,
                                    ),
                                ),
                                directives=[
                                    DirectiveNode(
                                        name=NameNode(
                                            value="onField",
                                            location=Location(
                                                line=32,
                                                column=70,
                                                line_end=33,
                                                column_end=1,
                                            ),
                                        ),
                                        arguments=[],
                                        location=Location(
                                            line=32,
                                            column=69,
                                            line_end=33,
                                            column_end=1,
                                        ),
                                    )
                                ],
                                location=Location(
                                    line=32,
                                    column=3,
                                    line_end=33,
                                    column_end=1,
                                ),
                            )
                        ],
                        location=Location(
                            line=31, column=1, line_end=35, column_end=1
                        ),
                    ),
                    ObjectTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="UndefinedType",
                            location=Location(
                                line=35, column=6, line_end=37, column_end=1
                            ),
                        ),
                        interfaces=[],
                        directives=[],
                        fields=[],
                        location=Location(
                            line=35, column=1, line_end=37, column_end=1
                        ),
                    ),
                    ObjectTypeExtensionNode(
                        name=NameNode(
                            value="Foo",
                            location=Location(
                                line=37, column=13, line_end=37, column_end=17
                            ),
                        ),
                        interfaces=[],
                        directives=[],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="seven",
                                    location=Location(
                                        line=38,
                                        column=3,
                                        line_end=38,
                                        column_end=8,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="argument",
                                            location=Location(
                                                line=38,
                                                column=9,
                                                line_end=38,
                                                column_end=17,
                                            ),
                                        ),
                                        type=ListTypeNode(
                                            type=NamedTypeNode(
                                                name=NameNode(
                                                    value="String",
                                                    location=Location(
                                                        line=38,
                                                        column=20,
                                                        line_end=38,
                                                        column_end=26,
                                                    ),
                                                ),
                                                location=Location(
                                                    line=38,
                                                    column=20,
                                                    line_end=38,
                                                    column_end=26,
                                                ),
                                            ),
                                            location=Location(
                                                line=38,
                                                column=19,
                                                line_end=38,
                                                column_end=27,
                                            ),
                                        ),
                                        default_value=None,
                                        directives=[],
                                        location=Location(
                                            line=38,
                                            column=9,
                                            line_end=38,
                                            column_end=27,
                                        ),
                                    )
                                ],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Type",
                                        location=Location(
                                            line=38,
                                            column=30,
                                            line_end=39,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=38,
                                        column=30,
                                        line_end=39,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=38,
                                    column=3,
                                    line_end=39,
                                    column_end=1,
                                ),
                            )
                        ],
                        location=Location(
                            line=37, column=1, line_end=41, column_end=1
                        ),
                    ),
                    ObjectTypeExtensionNode(
                        name=NameNode(
                            value="Foo",
                            location=Location(
                                line=41, column=13, line_end=41, column_end=17
                            ),
                        ),
                        interfaces=[],
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="onType",
                                    location=Location(
                                        line=41,
                                        column=18,
                                        line_end=43,
                                        column_end=1,
                                    ),
                                ),
                                arguments=[],
                                location=Location(
                                    line=41,
                                    column=17,
                                    line_end=43,
                                    column_end=1,
                                ),
                            )
                        ],
                        fields=[],
                        location=Location(
                            line=41, column=1, line_end=43, column_end=1
                        ),
                    ),
                    InterfaceTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="Bar",
                            location=Location(
                                line=43, column=11, line_end=43, column_end=15
                            ),
                        ),
                        directives=[],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="one",
                                    location=Location(
                                        line=44,
                                        column=3,
                                        line_end=44,
                                        column_end=6,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Type",
                                        location=Location(
                                            line=44,
                                            column=8,
                                            line_end=45,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=44,
                                        column=8,
                                        line_end=45,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=44,
                                    column=3,
                                    line_end=45,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="four",
                                    location=Location(
                                        line=45,
                                        column=3,
                                        line_end=45,
                                        column_end=7,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="argument",
                                            location=Location(
                                                line=45,
                                                column=8,
                                                line_end=45,
                                                column_end=16,
                                            ),
                                        ),
                                        type=NamedTypeNode(
                                            name=NameNode(
                                                value="String",
                                                location=Location(
                                                    line=45,
                                                    column=18,
                                                    line_end=45,
                                                    column_end=25,
                                                ),
                                            ),
                                            location=Location(
                                                line=45,
                                                column=18,
                                                line_end=45,
                                                column_end=25,
                                            ),
                                        ),
                                        default_value=StringValueNode(
                                            value="string",
                                            location=Location(
                                                line=45,
                                                column=27,
                                                line_end=45,
                                                column_end=35,
                                            ),
                                        ),
                                        directives=[],
                                        location=Location(
                                            line=45,
                                            column=8,
                                            line_end=45,
                                            column_end=35,
                                        ),
                                    )
                                ],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="String",
                                        location=Location(
                                            line=45,
                                            column=38,
                                            line_end=46,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=45,
                                        column=38,
                                        line_end=46,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=45,
                                    column=3,
                                    line_end=46,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=43, column=1, line_end=48, column_end=1
                        ),
                    ),
                    InterfaceTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="AnnotatedInterface",
                            location=Location(
                                line=48, column=11, line_end=48, column_end=30
                            ),
                        ),
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="onInterface",
                                    location=Location(
                                        line=48,
                                        column=31,
                                        line_end=48,
                                        column_end=43,
                                    ),
                                ),
                                arguments=[],
                                location=Location(
                                    line=48,
                                    column=30,
                                    line_end=48,
                                    column_end=43,
                                ),
                            )
                        ],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="annotatedField",
                                    location=Location(
                                        line=49,
                                        column=3,
                                        line_end=49,
                                        column_end=17,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="arg",
                                            location=Location(
                                                line=49,
                                                column=18,
                                                line_end=49,
                                                column_end=21,
                                            ),
                                        ),
                                        type=NamedTypeNode(
                                            name=NameNode(
                                                value="Type",
                                                location=Location(
                                                    line=49,
                                                    column=23,
                                                    line_end=49,
                                                    column_end=28,
                                                ),
                                            ),
                                            location=Location(
                                                line=49,
                                                column=23,
                                                line_end=49,
                                                column_end=28,
                                            ),
                                        ),
                                        default_value=None,
                                        directives=[
                                            DirectiveNode(
                                                name=NameNode(
                                                    value="onArgumentDefinition",
                                                    location=Location(
                                                        line=49,
                                                        column=29,
                                                        line_end=49,
                                                        column_end=49,
                                                    ),
                                                ),
                                                arguments=[],
                                                location=Location(
                                                    line=49,
                                                    column=28,
                                                    line_end=49,
                                                    column_end=49,
                                                ),
                                            )
                                        ],
                                        location=Location(
                                            line=49,
                                            column=18,
                                            line_end=49,
                                            column_end=49,
                                        ),
                                    )
                                ],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Type",
                                        location=Location(
                                            line=49,
                                            column=52,
                                            line_end=49,
                                            column_end=57,
                                        ),
                                    ),
                                    location=Location(
                                        line=49,
                                        column=52,
                                        line_end=49,
                                        column_end=57,
                                    ),
                                ),
                                directives=[
                                    DirectiveNode(
                                        name=NameNode(
                                            value="onField",
                                            location=Location(
                                                line=49,
                                                column=58,
                                                line_end=50,
                                                column_end=1,
                                            ),
                                        ),
                                        arguments=[],
                                        location=Location(
                                            line=49,
                                            column=57,
                                            line_end=50,
                                            column_end=1,
                                        ),
                                    )
                                ],
                                location=Location(
                                    line=49,
                                    column=3,
                                    line_end=50,
                                    column_end=1,
                                ),
                            )
                        ],
                        location=Location(
                            line=48, column=1, line_end=52, column_end=1
                        ),
                    ),
                    InterfaceTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="UndefinedInterface",
                            location=Location(
                                line=52, column=11, line_end=54, column_end=1
                            ),
                        ),
                        directives=[],
                        fields=[],
                        location=Location(
                            line=52, column=1, line_end=54, column_end=1
                        ),
                    ),
                    InterfaceTypeExtensionNode(
                        name=NameNode(
                            value="Bar",
                            location=Location(
                                line=54, column=18, line_end=54, column_end=22
                            ),
                        ),
                        directives=[],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="two",
                                    location=Location(
                                        line=55,
                                        column=3,
                                        line_end=55,
                                        column_end=6,
                                    ),
                                ),
                                arguments=[
                                    InputValueDefinitionNode(
                                        description=None,
                                        name=NameNode(
                                            value="argument",
                                            location=Location(
                                                line=55,
                                                column=7,
                                                line_end=55,
                                                column_end=15,
                                            ),
                                        ),
                                        type=NonNullTypeNode(
                                            type=NamedTypeNode(
                                                name=NameNode(
                                                    value="InputType",
                                                    location=Location(
                                                        line=55,
                                                        column=17,
                                                        line_end=55,
                                                        column_end=26,
                                                    ),
                                                ),
                                                location=Location(
                                                    line=55,
                                                    column=17,
                                                    line_end=55,
                                                    column_end=26,
                                                ),
                                            ),
                                            location=Location(
                                                line=55,
                                                column=17,
                                                line_end=55,
                                                column_end=27,
                                            ),
                                        ),
                                        default_value=None,
                                        directives=[],
                                        location=Location(
                                            line=55,
                                            column=7,
                                            line_end=55,
                                            column_end=27,
                                        ),
                                    )
                                ],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Type",
                                        location=Location(
                                            line=55,
                                            column=30,
                                            line_end=56,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=55,
                                        column=30,
                                        line_end=56,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=55,
                                    column=3,
                                    line_end=56,
                                    column_end=1,
                                ),
                            )
                        ],
                        location=Location(
                            line=54, column=1, line_end=58, column_end=1
                        ),
                    ),
                    InterfaceTypeExtensionNode(
                        name=NameNode(
                            value="Bar",
                            location=Location(
                                line=58, column=18, line_end=58, column_end=22
                            ),
                        ),
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="onInterface",
                                    location=Location(
                                        line=58,
                                        column=23,
                                        line_end=60,
                                        column_end=1,
                                    ),
                                ),
                                arguments=[],
                                location=Location(
                                    line=58,
                                    column=22,
                                    line_end=60,
                                    column_end=1,
                                ),
                            )
                        ],
                        fields=[],
                        location=Location(
                            line=58, column=1, line_end=60, column_end=1
                        ),
                    ),
                    UnionTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="Feed",
                            location=Location(
                                line=60, column=7, line_end=60, column_end=12
                            ),
                        ),
                        directives=[],
                        types=[
                            NamedTypeNode(
                                name=NameNode(
                                    value="Story",
                                    location=Location(
                                        line=61,
                                        column=5,
                                        line_end=62,
                                        column_end=3,
                                    ),
                                ),
                                location=Location(
                                    line=61,
                                    column=5,
                                    line_end=62,
                                    column_end=3,
                                ),
                            ),
                            NamedTypeNode(
                                name=NameNode(
                                    value="Article",
                                    location=Location(
                                        line=62,
                                        column=5,
                                        line_end=63,
                                        column_end=3,
                                    ),
                                ),
                                location=Location(
                                    line=62,
                                    column=5,
                                    line_end=63,
                                    column_end=3,
                                ),
                            ),
                            NamedTypeNode(
                                name=NameNode(
                                    value="Advert",
                                    location=Location(
                                        line=63,
                                        column=5,
                                        line_end=65,
                                        column_end=1,
                                    ),
                                ),
                                location=Location(
                                    line=63,
                                    column=5,
                                    line_end=65,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=60, column=1, line_end=65, column_end=1
                        ),
                    ),
                    UnionTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="AnnotatedUnion",
                            location=Location(
                                line=65, column=7, line_end=65, column_end=22
                            ),
                        ),
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="onUnion",
                                    location=Location(
                                        line=65,
                                        column=23,
                                        line_end=65,
                                        column_end=31,
                                    ),
                                ),
                                arguments=[],
                                location=Location(
                                    line=65,
                                    column=22,
                                    line_end=65,
                                    column_end=31,
                                ),
                            )
                        ],
                        types=[
                            NamedTypeNode(
                                name=NameNode(
                                    value="A",
                                    location=Location(
                                        line=65,
                                        column=33,
                                        line_end=65,
                                        column_end=35,
                                    ),
                                ),
                                location=Location(
                                    line=65,
                                    column=33,
                                    line_end=65,
                                    column_end=35,
                                ),
                            ),
                            NamedTypeNode(
                                name=NameNode(
                                    value="B",
                                    location=Location(
                                        line=65,
                                        column=37,
                                        line_end=67,
                                        column_end=1,
                                    ),
                                ),
                                location=Location(
                                    line=65,
                                    column=37,
                                    line_end=67,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=65, column=1, line_end=67, column_end=1
                        ),
                    ),
                    UnionTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="AnnotatedUnionTwo",
                            location=Location(
                                line=67, column=7, line_end=67, column_end=25
                            ),
                        ),
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="onUnion",
                                    location=Location(
                                        line=67,
                                        column=26,
                                        line_end=67,
                                        column_end=34,
                                    ),
                                ),
                                arguments=[],
                                location=Location(
                                    line=67,
                                    column=25,
                                    line_end=67,
                                    column_end=34,
                                ),
                            )
                        ],
                        types=[
                            NamedTypeNode(
                                name=NameNode(
                                    value="A",
                                    location=Location(
                                        line=67,
                                        column=38,
                                        line_end=67,
                                        column_end=40,
                                    ),
                                ),
                                location=Location(
                                    line=67,
                                    column=38,
                                    line_end=67,
                                    column_end=40,
                                ),
                            ),
                            NamedTypeNode(
                                name=NameNode(
                                    value="B",
                                    location=Location(
                                        line=67,
                                        column=42,
                                        line_end=69,
                                        column_end=1,
                                    ),
                                ),
                                location=Location(
                                    line=67,
                                    column=42,
                                    line_end=69,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=67, column=1, line_end=69, column_end=1
                        ),
                    ),
                    UnionTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="UndefinedUnion",
                            location=Location(
                                line=69, column=7, line_end=71, column_end=1
                            ),
                        ),
                        directives=[],
                        types=[],
                        location=Location(
                            line=69, column=1, line_end=71, column_end=1
                        ),
                    ),
                    UnionTypeExtensionNode(
                        name=NameNode(
                            value="Feed",
                            location=Location(
                                line=71, column=14, line_end=71, column_end=19
                            ),
                        ),
                        directives=[],
                        types=[
                            NamedTypeNode(
                                name=NameNode(
                                    value="Photo",
                                    location=Location(
                                        line=71,
                                        column=21,
                                        line_end=71,
                                        column_end=27,
                                    ),
                                ),
                                location=Location(
                                    line=71,
                                    column=21,
                                    line_end=71,
                                    column_end=27,
                                ),
                            ),
                            NamedTypeNode(
                                name=NameNode(
                                    value="Video",
                                    location=Location(
                                        line=71,
                                        column=29,
                                        line_end=73,
                                        column_end=1,
                                    ),
                                ),
                                location=Location(
                                    line=71,
                                    column=29,
                                    line_end=73,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=71, column=1, line_end=73, column_end=1
                        ),
                    ),
                    UnionTypeExtensionNode(
                        name=NameNode(
                            value="Feed",
                            location=Location(
                                line=73, column=14, line_end=73, column_end=19
                            ),
                        ),
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="onUnion",
                                    location=Location(
                                        line=73,
                                        column=20,
                                        line_end=75,
                                        column_end=1,
                                    ),
                                ),
                                arguments=[],
                                location=Location(
                                    line=73,
                                    column=19,
                                    line_end=75,
                                    column_end=1,
                                ),
                            )
                        ],
                        types=[],
                        location=Location(
                            line=73, column=1, line_end=75, column_end=1
                        ),
                    ),
                    ScalarTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="CustomScalar",
                            location=Location(
                                line=75, column=8, line_end=77, column_end=1
                            ),
                        ),
                        directives=[],
                        location=Location(
                            line=75, column=1, line_end=77, column_end=1
                        ),
                    ),
                    ScalarTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="AnnotatedScalar",
                            location=Location(
                                line=77, column=8, line_end=77, column_end=24
                            ),
                        ),
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="onScalar",
                                    location=Location(
                                        line=77,
                                        column=25,
                                        line_end=79,
                                        column_end=1,
                                    ),
                                ),
                                arguments=[],
                                location=Location(
                                    line=77,
                                    column=24,
                                    line_end=79,
                                    column_end=1,
                                ),
                            )
                        ],
                        location=Location(
                            line=77, column=1, line_end=79, column_end=1
                        ),
                    ),
                    ScalarTypeExtensionNode(
                        name=NameNode(
                            value="CustomScalar",
                            location=Location(
                                line=79, column=15, line_end=79, column_end=28
                            ),
                        ),
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="onScalar",
                                    location=Location(
                                        line=79,
                                        column=29,
                                        line_end=81,
                                        column_end=1,
                                    ),
                                ),
                                arguments=[],
                                location=Location(
                                    line=79,
                                    column=28,
                                    line_end=81,
                                    column_end=1,
                                ),
                            )
                        ],
                        location=Location(
                            line=79, column=1, line_end=81, column_end=1
                        ),
                    ),
                    EnumTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="Site",
                            location=Location(
                                line=81, column=6, line_end=81, column_end=11
                            ),
                        ),
                        directives=[],
                        values=[
                            EnumValueDefinitionNode(
                                description=DescriptionNode(
                                    value="\n  This is a description of the `DESKTOP` value\n  ",
                                    location=Location(
                                        line=82,
                                        column=3,
                                        line_end=85,
                                        column_end=3,
                                    ),
                                ),
                                name=EnumValueNode(
                                    value="DESKTOP",
                                    location=Location(
                                        line=85,
                                        column=3,
                                        line_end=87,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=82,
                                    column=3,
                                    line_end=87,
                                    column_end=3,
                                ),
                            ),
                            EnumValueDefinitionNode(
                                description=DescriptionNode(
                                    value="This is a description of the `MOBILE` value",
                                    location=Location(
                                        line=87,
                                        column=3,
                                        line_end=88,
                                        column_end=3,
                                    ),
                                ),
                                name=EnumValueNode(
                                    value="MOBILE",
                                    location=Location(
                                        line=88,
                                        column=3,
                                        line_end=90,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=87,
                                    column=3,
                                    line_end=90,
                                    column_end=3,
                                ),
                            ),
                            EnumValueDefinitionNode(
                                description=DescriptionNode(
                                    value="This is a description of the `WEB` value",
                                    location=Location(
                                        line=90,
                                        column=3,
                                        line_end=91,
                                        column_end=3,
                                    ),
                                ),
                                name=EnumValueNode(
                                    value="WEB",
                                    location=Location(
                                        line=91,
                                        column=3,
                                        line_end=92,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=90,
                                    column=3,
                                    line_end=92,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=81, column=1, line_end=94, column_end=1
                        ),
                    ),
                    EnumTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="AnnotatedEnum",
                            location=Location(
                                line=94, column=6, line_end=94, column_end=20
                            ),
                        ),
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="onEnum",
                                    location=Location(
                                        line=94,
                                        column=21,
                                        line_end=94,
                                        column_end=28,
                                    ),
                                ),
                                arguments=[],
                                location=Location(
                                    line=94,
                                    column=20,
                                    line_end=94,
                                    column_end=28,
                                ),
                            )
                        ],
                        values=[
                            EnumValueDefinitionNode(
                                description=None,
                                name=EnumValueNode(
                                    value="ANNOTATED_VALUE",
                                    location=Location(
                                        line=95,
                                        column=3,
                                        line_end=95,
                                        column_end=19,
                                    ),
                                ),
                                directives=[
                                    DirectiveNode(
                                        name=NameNode(
                                            value="onEnumValue",
                                            location=Location(
                                                line=95,
                                                column=20,
                                                line_end=96,
                                                column_end=3,
                                            ),
                                        ),
                                        arguments=[],
                                        location=Location(
                                            line=95,
                                            column=19,
                                            line_end=96,
                                            column_end=3,
                                        ),
                                    )
                                ],
                                location=Location(
                                    line=95,
                                    column=3,
                                    line_end=96,
                                    column_end=3,
                                ),
                            ),
                            EnumValueDefinitionNode(
                                description=None,
                                name=EnumValueNode(
                                    value="OTHER_VALUE",
                                    location=Location(
                                        line=96,
                                        column=3,
                                        line_end=97,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=96,
                                    column=3,
                                    line_end=97,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=94, column=1, line_end=99, column_end=1
                        ),
                    ),
                    EnumTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="UndefinedEnum",
                            location=Location(
                                line=99, column=6, line_end=101, column_end=1
                            ),
                        ),
                        directives=[],
                        values=[],
                        location=Location(
                            line=99, column=1, line_end=101, column_end=1
                        ),
                    ),
                    EnumTypeExtensionNode(
                        name=NameNode(
                            value="Site",
                            location=Location(
                                line=101,
                                column=13,
                                line_end=101,
                                column_end=18,
                            ),
                        ),
                        directives=[],
                        values=[
                            EnumValueDefinitionNode(
                                description=None,
                                name=EnumValueNode(
                                    value="VR",
                                    location=Location(
                                        line=102,
                                        column=3,
                                        line_end=103,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=102,
                                    column=3,
                                    line_end=103,
                                    column_end=1,
                                ),
                            )
                        ],
                        location=Location(
                            line=101, column=1, line_end=105, column_end=1
                        ),
                    ),
                    EnumTypeExtensionNode(
                        name=NameNode(
                            value="Site",
                            location=Location(
                                line=105,
                                column=13,
                                line_end=105,
                                column_end=18,
                            ),
                        ),
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="onEnum",
                                    location=Location(
                                        line=105,
                                        column=19,
                                        line_end=107,
                                        column_end=1,
                                    ),
                                ),
                                arguments=[],
                                location=Location(
                                    line=105,
                                    column=18,
                                    line_end=107,
                                    column_end=1,
                                ),
                            )
                        ],
                        values=[],
                        location=Location(
                            line=105, column=1, line_end=107, column_end=1
                        ),
                    ),
                    InputObjectTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="InputType",
                            location=Location(
                                line=107, column=7, line_end=107, column_end=17
                            ),
                        ),
                        directives=[],
                        fields=[
                            InputValueDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="key",
                                    location=Location(
                                        line=108,
                                        column=3,
                                        line_end=108,
                                        column_end=6,
                                    ),
                                ),
                                type=NonNullTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="String",
                                            location=Location(
                                                line=108,
                                                column=8,
                                                line_end=108,
                                                column_end=14,
                                            ),
                                        ),
                                        location=Location(
                                            line=108,
                                            column=8,
                                            line_end=108,
                                            column_end=14,
                                        ),
                                    ),
                                    location=Location(
                                        line=108,
                                        column=8,
                                        line_end=109,
                                        column_end=3,
                                    ),
                                ),
                                default_value=None,
                                directives=[],
                                location=Location(
                                    line=108,
                                    column=3,
                                    line_end=109,
                                    column_end=3,
                                ),
                            ),
                            InputValueDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="answer",
                                    location=Location(
                                        line=109,
                                        column=3,
                                        line_end=109,
                                        column_end=9,
                                    ),
                                ),
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Int",
                                        location=Location(
                                            line=109,
                                            column=11,
                                            line_end=109,
                                            column_end=15,
                                        ),
                                    ),
                                    location=Location(
                                        line=109,
                                        column=11,
                                        line_end=109,
                                        column_end=15,
                                    ),
                                ),
                                default_value=IntValueNode(
                                    value=42,
                                    location=Location(
                                        line=109,
                                        column=17,
                                        line_end=110,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=109,
                                    column=3,
                                    line_end=110,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=107, column=1, line_end=112, column_end=1
                        ),
                    ),
                    InputObjectTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="AnnotatedInput",
                            location=Location(
                                line=112, column=7, line_end=112, column_end=22
                            ),
                        ),
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="onInputObject",
                                    location=Location(
                                        line=112,
                                        column=23,
                                        line_end=112,
                                        column_end=37,
                                    ),
                                ),
                                arguments=[],
                                location=Location(
                                    line=112,
                                    column=22,
                                    line_end=112,
                                    column_end=37,
                                ),
                            )
                        ],
                        fields=[
                            InputValueDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="annotatedField",
                                    location=Location(
                                        line=113,
                                        column=3,
                                        line_end=113,
                                        column_end=17,
                                    ),
                                ),
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Type",
                                        location=Location(
                                            line=113,
                                            column=19,
                                            line_end=113,
                                            column_end=24,
                                        ),
                                    ),
                                    location=Location(
                                        line=113,
                                        column=19,
                                        line_end=113,
                                        column_end=24,
                                    ),
                                ),
                                default_value=None,
                                directives=[
                                    DirectiveNode(
                                        name=NameNode(
                                            value="onInputFieldDefinition",
                                            location=Location(
                                                line=113,
                                                column=25,
                                                line_end=114,
                                                column_end=1,
                                            ),
                                        ),
                                        arguments=[],
                                        location=Location(
                                            line=113,
                                            column=24,
                                            line_end=114,
                                            column_end=1,
                                        ),
                                    )
                                ],
                                location=Location(
                                    line=113,
                                    column=3,
                                    line_end=114,
                                    column_end=1,
                                ),
                            )
                        ],
                        location=Location(
                            line=112, column=1, line_end=116, column_end=1
                        ),
                    ),
                    InputObjectTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="UndefinedInput",
                            location=Location(
                                line=116, column=7, line_end=118, column_end=1
                            ),
                        ),
                        directives=[],
                        fields=[],
                        location=Location(
                            line=116, column=1, line_end=118, column_end=1
                        ),
                    ),
                    InputObjectTypeExtensionNode(
                        name=NameNode(
                            value="InputType",
                            location=Location(
                                line=118,
                                column=14,
                                line_end=118,
                                column_end=24,
                            ),
                        ),
                        directives=[],
                        fields=[
                            InputValueDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="other",
                                    location=Location(
                                        line=119,
                                        column=3,
                                        line_end=119,
                                        column_end=8,
                                    ),
                                ),
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Float",
                                        location=Location(
                                            line=119,
                                            column=10,
                                            line_end=119,
                                            column_end=16,
                                        ),
                                    ),
                                    location=Location(
                                        line=119,
                                        column=10,
                                        line_end=119,
                                        column_end=16,
                                    ),
                                ),
                                default_value=FloatValueNode(
                                    value=12300.0,
                                    location=Location(
                                        line=119,
                                        column=18,
                                        line_end=119,
                                        column_end=25,
                                    ),
                                ),
                                directives=[
                                    DirectiveNode(
                                        name=NameNode(
                                            value="onInputFieldDefinition",
                                            location=Location(
                                                line=119,
                                                column=26,
                                                line_end=120,
                                                column_end=1,
                                            ),
                                        ),
                                        arguments=[],
                                        location=Location(
                                            line=119,
                                            column=25,
                                            line_end=120,
                                            column_end=1,
                                        ),
                                    )
                                ],
                                location=Location(
                                    line=119,
                                    column=3,
                                    line_end=120,
                                    column_end=1,
                                ),
                            )
                        ],
                        location=Location(
                            line=118, column=1, line_end=122, column_end=1
                        ),
                    ),
                    InputObjectTypeExtensionNode(
                        name=NameNode(
                            value="InputType",
                            location=Location(
                                line=122,
                                column=14,
                                line_end=122,
                                column_end=24,
                            ),
                        ),
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="onInputObject",
                                    location=Location(
                                        line=122,
                                        column=25,
                                        line_end=124,
                                        column_end=1,
                                    ),
                                ),
                                arguments=[],
                                location=Location(
                                    line=122,
                                    column=24,
                                    line_end=124,
                                    column_end=1,
                                ),
                            )
                        ],
                        fields=[],
                        location=Location(
                            line=122, column=1, line_end=124, column_end=1
                        ),
                    ),
                    DirectiveDefinitionNode(
                        description=DescriptionNode(
                            value="\nThis is a description of the `@skip` directive\n",
                            location=Location(
                                line=124, column=1, line_end=127, column_end=1
                            ),
                        ),
                        name=NameNode(
                            value="skip",
                            location=Location(
                                line=127,
                                column=12,
                                line_end=127,
                                column_end=16,
                            ),
                        ),
                        arguments=[
                            InputValueDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="if",
                                    location=Location(
                                        line=128,
                                        column=3,
                                        line_end=128,
                                        column_end=5,
                                    ),
                                ),
                                type=NonNullTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="Boolean",
                                            location=Location(
                                                line=128,
                                                column=7,
                                                line_end=128,
                                                column_end=14,
                                            ),
                                        ),
                                        location=Location(
                                            line=128,
                                            column=7,
                                            line_end=128,
                                            column_end=14,
                                        ),
                                    ),
                                    location=Location(
                                        line=128,
                                        column=7,
                                        line_end=128,
                                        column_end=16,
                                    ),
                                ),
                                default_value=None,
                                directives=[
                                    DirectiveNode(
                                        name=NameNode(
                                            value="onArgumentDefinition",
                                            location=Location(
                                                line=128,
                                                column=17,
                                                line_end=129,
                                                column_end=1,
                                            ),
                                        ),
                                        arguments=[],
                                        location=Location(
                                            line=128,
                                            column=16,
                                            line_end=129,
                                            column_end=1,
                                        ),
                                    )
                                ],
                                location=Location(
                                    line=128,
                                    column=3,
                                    line_end=129,
                                    column_end=1,
                                ),
                            )
                        ],
                        locations=[
                            NameNode(
                                value="FIELD",
                                location=Location(
                                    line=129,
                                    column=6,
                                    line_end=129,
                                    column_end=12,
                                ),
                            ),
                            NameNode(
                                value="FRAGMENT_SPREAD",
                                location=Location(
                                    line=129,
                                    column=14,
                                    line_end=129,
                                    column_end=30,
                                ),
                            ),
                            NameNode(
                                value="INLINE_FRAGMENT",
                                location=Location(
                                    line=129,
                                    column=32,
                                    line_end=131,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=124, column=1, line_end=131, column_end=1
                        ),
                    ),
                    DirectiveDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="include",
                            location=Location(
                                line=131,
                                column=12,
                                line_end=131,
                                column_end=19,
                            ),
                        ),
                        arguments=[
                            InputValueDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="if",
                                    location=Location(
                                        line=131,
                                        column=20,
                                        line_end=131,
                                        column_end=22,
                                    ),
                                ),
                                type=NonNullTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="Boolean",
                                            location=Location(
                                                line=131,
                                                column=24,
                                                line_end=131,
                                                column_end=31,
                                            ),
                                        ),
                                        location=Location(
                                            line=131,
                                            column=24,
                                            line_end=131,
                                            column_end=31,
                                        ),
                                    ),
                                    location=Location(
                                        line=131,
                                        column=24,
                                        line_end=131,
                                        column_end=32,
                                    ),
                                ),
                                default_value=None,
                                directives=[],
                                location=Location(
                                    line=131,
                                    column=20,
                                    line_end=131,
                                    column_end=32,
                                ),
                            )
                        ],
                        locations=[
                            NameNode(
                                value="FIELD",
                                location=Location(
                                    line=132,
                                    column=6,
                                    line_end=133,
                                    column_end=4,
                                ),
                            ),
                            NameNode(
                                value="FRAGMENT_SPREAD",
                                location=Location(
                                    line=133,
                                    column=6,
                                    line_end=134,
                                    column_end=4,
                                ),
                            ),
                            NameNode(
                                value="INLINE_FRAGMENT",
                                location=Location(
                                    line=134,
                                    column=6,
                                    line_end=136,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=131, column=1, line_end=136, column_end=1
                        ),
                    ),
                    DirectiveDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="include2",
                            location=Location(
                                line=136,
                                column=12,
                                line_end=136,
                                column_end=20,
                            ),
                        ),
                        arguments=[
                            InputValueDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="if",
                                    location=Location(
                                        line=136,
                                        column=21,
                                        line_end=136,
                                        column_end=23,
                                    ),
                                ),
                                type=NonNullTypeNode(
                                    type=NamedTypeNode(
                                        name=NameNode(
                                            value="Boolean",
                                            location=Location(
                                                line=136,
                                                column=25,
                                                line_end=136,
                                                column_end=32,
                                            ),
                                        ),
                                        location=Location(
                                            line=136,
                                            column=25,
                                            line_end=136,
                                            column_end=32,
                                        ),
                                    ),
                                    location=Location(
                                        line=136,
                                        column=25,
                                        line_end=136,
                                        column_end=33,
                                    ),
                                ),
                                default_value=None,
                                directives=[],
                                location=Location(
                                    line=136,
                                    column=21,
                                    line_end=136,
                                    column_end=33,
                                ),
                            )
                        ],
                        locations=[
                            NameNode(
                                value="FIELD",
                                location=Location(
                                    line=137,
                                    column=5,
                                    line_end=138,
                                    column_end=3,
                                ),
                            ),
                            NameNode(
                                value="FRAGMENT_SPREAD",
                                location=Location(
                                    line=138,
                                    column=5,
                                    line_end=139,
                                    column_end=3,
                                ),
                            ),
                            NameNode(
                                value="INLINE_FRAGMENT",
                                location=Location(
                                    line=139,
                                    column=5,
                                    line_end=141,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=136, column=1, line_end=141, column_end=1
                        ),
                    ),
                    SchemaExtensionNode(
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="onSchema",
                                    location=Location(
                                        line=141,
                                        column=16,
                                        line_end=143,
                                        column_end=1,
                                    ),
                                ),
                                arguments=[],
                                location=Location(
                                    line=141,
                                    column=15,
                                    line_end=143,
                                    column_end=1,
                                ),
                            )
                        ],
                        operation_type_definitions=[],
                        location=Location(
                            line=141, column=1, line_end=143, column_end=1
                        ),
                    ),
                    SchemaExtensionNode(
                        directives=[
                            DirectiveNode(
                                name=NameNode(
                                    value="onSchema",
                                    location=Location(
                                        line=143,
                                        column=16,
                                        line_end=143,
                                        column_end=25,
                                    ),
                                ),
                                arguments=[],
                                location=Location(
                                    line=143,
                                    column=15,
                                    line_end=143,
                                    column_end=25,
                                ),
                            )
                        ],
                        operation_type_definitions=[
                            OperationTypeDefinitionNode(
                                operation_type="subscription",
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="SubscriptionType",
                                        location=Location(
                                            line=144,
                                            column=17,
                                            line_end=145,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=144,
                                        column=17,
                                        line_end=145,
                                        column_end=1,
                                    ),
                                ),
                                location=Location(
                                    line=144,
                                    column=3,
                                    line_end=145,
                                    column_end=1,
                                ),
                            )
                        ],
                        location=Location(
                            line=143, column=1, line_end=146, column_end=1
                        ),
                    ),
                ],
                location=Location(
                    line=1, column=1, line_end=146, column_end=1
                ),
            ),
        ),
        (
            os.path.join(_BASE_DIR, "fixtures", "keyword-tokens.graphql"),
            DocumentNode(
                definitions=[
                    ObjectTypeDefinitionNode(
                        description=None,
                        name=NameNode(
                            value="TreeEntry",
                            location=Location(
                                line=1, column=6, line_end=1, column_end=16
                            ),
                        ),
                        interfaces=[],
                        directives=[],
                        fields=[
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="schema",
                                    location=Location(
                                        line=2,
                                        column=3,
                                        line_end=2,
                                        column_end=9,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=2,
                                            column=11,
                                            line_end=3,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=2,
                                        column=11,
                                        line_end=3,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=2, column=3, line_end=3, column_end=3
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="query",
                                    location=Location(
                                        line=3,
                                        column=3,
                                        line_end=3,
                                        column_end=8,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=3,
                                            column=10,
                                            line_end=4,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=3,
                                        column=10,
                                        line_end=4,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=3, column=3, line_end=4, column_end=3
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="mutation",
                                    location=Location(
                                        line=4,
                                        column=3,
                                        line_end=4,
                                        column_end=11,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=4,
                                            column=13,
                                            line_end=5,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=4,
                                        column=13,
                                        line_end=5,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=4, column=3, line_end=5, column_end=3
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="subscription",
                                    location=Location(
                                        line=5,
                                        column=3,
                                        line_end=5,
                                        column_end=15,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=5,
                                            column=17,
                                            line_end=6,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=5,
                                        column=17,
                                        line_end=6,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=5, column=3, line_end=6, column_end=3
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="type",
                                    location=Location(
                                        line=6,
                                        column=3,
                                        line_end=6,
                                        column_end=7,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=6,
                                            column=9,
                                            line_end=7,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=6,
                                        column=9,
                                        line_end=7,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=6, column=3, line_end=7, column_end=3
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="directive",
                                    location=Location(
                                        line=7,
                                        column=3,
                                        line_end=7,
                                        column_end=12,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=7,
                                            column=14,
                                            line_end=8,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=7,
                                        column=14,
                                        line_end=8,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=7, column=3, line_end=8, column_end=3
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="interface",
                                    location=Location(
                                        line=8,
                                        column=3,
                                        line_end=8,
                                        column_end=12,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=8,
                                            column=14,
                                            line_end=9,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=8,
                                        column=14,
                                        line_end=9,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=8, column=3, line_end=9, column_end=3
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="implements",
                                    location=Location(
                                        line=9,
                                        column=3,
                                        line_end=9,
                                        column_end=13,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=9,
                                            column=15,
                                            line_end=10,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=9,
                                        column=15,
                                        line_end=10,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=9, column=3, line_end=10, column_end=3
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="union",
                                    location=Location(
                                        line=10,
                                        column=3,
                                        line_end=10,
                                        column_end=8,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=10,
                                            column=10,
                                            line_end=11,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=10,
                                        column=10,
                                        line_end=11,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=10,
                                    column=3,
                                    line_end=11,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="enum",
                                    location=Location(
                                        line=11,
                                        column=3,
                                        line_end=11,
                                        column_end=7,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=11,
                                            column=9,
                                            line_end=12,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=11,
                                        column=9,
                                        line_end=12,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=11,
                                    column=3,
                                    line_end=12,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="input",
                                    location=Location(
                                        line=12,
                                        column=3,
                                        line_end=12,
                                        column_end=8,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=12,
                                            column=10,
                                            line_end=13,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=12,
                                        column=10,
                                        line_end=13,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=12,
                                    column=3,
                                    line_end=13,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="on",
                                    location=Location(
                                        line=13,
                                        column=3,
                                        line_end=13,
                                        column_end=5,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=13,
                                            column=7,
                                            line_end=14,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=13,
                                        column=7,
                                        line_end=14,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=13,
                                    column=3,
                                    line_end=14,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="scalar",
                                    location=Location(
                                        line=14,
                                        column=3,
                                        line_end=14,
                                        column_end=9,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=14,
                                            column=11,
                                            line_end=15,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=14,
                                        column=11,
                                        line_end=15,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=14,
                                    column=3,
                                    line_end=15,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="extend",
                                    location=Location(
                                        line=15,
                                        column=3,
                                        line_end=15,
                                        column_end=9,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=15,
                                            column=11,
                                            line_end=16,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=15,
                                        column=11,
                                        line_end=16,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=15,
                                    column=3,
                                    line_end=16,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="QUERY",
                                    location=Location(
                                        line=16,
                                        column=3,
                                        line_end=16,
                                        column_end=8,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=16,
                                            column=10,
                                            line_end=17,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=16,
                                        column=10,
                                        line_end=17,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=16,
                                    column=3,
                                    line_end=17,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="MUTATION",
                                    location=Location(
                                        line=17,
                                        column=3,
                                        line_end=17,
                                        column_end=11,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=17,
                                            column=13,
                                            line_end=18,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=17,
                                        column=13,
                                        line_end=18,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=17,
                                    column=3,
                                    line_end=18,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="SUBSCRIPTION",
                                    location=Location(
                                        line=18,
                                        column=3,
                                        line_end=18,
                                        column_end=15,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=18,
                                            column=17,
                                            line_end=19,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=18,
                                        column=17,
                                        line_end=19,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=18,
                                    column=3,
                                    line_end=19,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="FIELD",
                                    location=Location(
                                        line=19,
                                        column=3,
                                        line_end=19,
                                        column_end=8,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=19,
                                            column=10,
                                            line_end=20,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=19,
                                        column=10,
                                        line_end=20,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=19,
                                    column=3,
                                    line_end=20,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="FRAGMENT_DEFINITION",
                                    location=Location(
                                        line=20,
                                        column=3,
                                        line_end=20,
                                        column_end=22,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=20,
                                            column=24,
                                            line_end=21,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=20,
                                        column=24,
                                        line_end=21,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=20,
                                    column=3,
                                    line_end=21,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="FRAGMENT_SPREAD",
                                    location=Location(
                                        line=21,
                                        column=3,
                                        line_end=21,
                                        column_end=18,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=21,
                                            column=20,
                                            line_end=22,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=21,
                                        column=20,
                                        line_end=22,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=21,
                                    column=3,
                                    line_end=22,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="INLINE_FRAGMENT",
                                    location=Location(
                                        line=22,
                                        column=3,
                                        line_end=22,
                                        column_end=18,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=22,
                                            column=20,
                                            line_end=23,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=22,
                                        column=20,
                                        line_end=23,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=22,
                                    column=3,
                                    line_end=23,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="SCHEMA",
                                    location=Location(
                                        line=23,
                                        column=3,
                                        line_end=23,
                                        column_end=9,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=23,
                                            column=11,
                                            line_end=24,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=23,
                                        column=11,
                                        line_end=24,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=23,
                                    column=3,
                                    line_end=24,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="SCALAR",
                                    location=Location(
                                        line=24,
                                        column=3,
                                        line_end=24,
                                        column_end=9,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=24,
                                            column=11,
                                            line_end=25,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=24,
                                        column=11,
                                        line_end=25,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=24,
                                    column=3,
                                    line_end=25,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="OBJECT",
                                    location=Location(
                                        line=25,
                                        column=3,
                                        line_end=25,
                                        column_end=9,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=25,
                                            column=11,
                                            line_end=26,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=25,
                                        column=11,
                                        line_end=26,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=25,
                                    column=3,
                                    line_end=26,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="FIELD_DEFINITION",
                                    location=Location(
                                        line=26,
                                        column=3,
                                        line_end=26,
                                        column_end=19,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=26,
                                            column=21,
                                            line_end=27,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=26,
                                        column=21,
                                        line_end=27,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=26,
                                    column=3,
                                    line_end=27,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="ARGUMENT_DEFINITION",
                                    location=Location(
                                        line=27,
                                        column=3,
                                        line_end=27,
                                        column_end=22,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=27,
                                            column=24,
                                            line_end=28,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=27,
                                        column=24,
                                        line_end=28,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=27,
                                    column=3,
                                    line_end=28,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="INTERFACE",
                                    location=Location(
                                        line=28,
                                        column=3,
                                        line_end=28,
                                        column_end=12,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=28,
                                            column=14,
                                            line_end=29,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=28,
                                        column=14,
                                        line_end=29,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=28,
                                    column=3,
                                    line_end=29,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="UNION",
                                    location=Location(
                                        line=29,
                                        column=3,
                                        line_end=29,
                                        column_end=8,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=29,
                                            column=10,
                                            line_end=30,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=29,
                                        column=10,
                                        line_end=30,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=29,
                                    column=3,
                                    line_end=30,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="ENUM",
                                    location=Location(
                                        line=30,
                                        column=3,
                                        line_end=30,
                                        column_end=7,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=30,
                                            column=9,
                                            line_end=31,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=30,
                                        column=9,
                                        line_end=31,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=30,
                                    column=3,
                                    line_end=31,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="ENUM_VALUE",
                                    location=Location(
                                        line=31,
                                        column=3,
                                        line_end=31,
                                        column_end=13,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=31,
                                            column=15,
                                            line_end=32,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=31,
                                        column=15,
                                        line_end=32,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=31,
                                    column=3,
                                    line_end=32,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="INPUT_OBJECT",
                                    location=Location(
                                        line=32,
                                        column=3,
                                        line_end=32,
                                        column_end=15,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=32,
                                            column=17,
                                            line_end=33,
                                            column_end=3,
                                        ),
                                    ),
                                    location=Location(
                                        line=32,
                                        column=17,
                                        line_end=33,
                                        column_end=3,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=32,
                                    column=3,
                                    line_end=33,
                                    column_end=3,
                                ),
                            ),
                            FieldDefinitionNode(
                                description=None,
                                name=NameNode(
                                    value="INPUT_FIELD_DEFINITION",
                                    location=Location(
                                        line=33,
                                        column=3,
                                        line_end=33,
                                        column_end=25,
                                    ),
                                ),
                                arguments=[],
                                type=NamedTypeNode(
                                    name=NameNode(
                                        value="Boolean",
                                        location=Location(
                                            line=33,
                                            column=27,
                                            line_end=34,
                                            column_end=1,
                                        ),
                                    ),
                                    location=Location(
                                        line=33,
                                        column=27,
                                        line_end=34,
                                        column_end=1,
                                    ),
                                ),
                                directives=[],
                                location=Location(
                                    line=33,
                                    column=3,
                                    line_end=34,
                                    column_end=1,
                                ),
                            ),
                        ],
                        location=Location(
                            line=1, column=1, line_end=35, column_end=1
                        ),
                    )
                ],
                location=Location(line=1, column=1, line_end=35, column_end=1),
            ),
        ),
    ],
)
def test_parse_to_document(sdl_file_path, expected):
    with open(sdl_file_path) as sdl_file:
        assert parse_to_document(sdl_file.read()) == expected


def test_parse_to_document_mock():
    parsed_mock = Mock()
    node_transformed = Mock()

    sdl = "type MyType { a: String }"

    with patch(
        "tartiflette.language.parsers.lark.parser._LARK_PARSER.parse",
        return_value=parsed_mock,
    ) as lark_parser_mock:
        with patch(
            "tartiflette.language.parsers.lark.parser.NodeTransformer",
            return_value=node_transformed,
        ) as node_transformer_mock:
            with patch(
                "tartiflette.language.parsers.lark.parser.TokenTransformer"
            ) as token_transformer_mock:
                assert parse_to_document(sdl) == node_transformed.document_node
                node_transformer_mock.assert_called_once()
                token_transformer_mock.assert_called_once()
                lark_parser_mock.assert_called_once_with(sdl)
